nombre / décimales

Le
jean luc
Bonjour,

Quelqu'un pourrait-il me dire comment faire pour
1°) séparer la partie entière et la partie décimale d'un nombre ?
2°) arrondir à l'unité supérieure si = ou > 0.50 ou arrondir unité
inférieure si < à 0.50
Merci d'avance.
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Eric
Le #5373571
" jean luc" $:

Bonjour,

Quelqu'un pourrait-il me dire comment faire pour
1°) séparer la partie entière et la partie décimale d'un nombre ?
2°) arrondir à l'unité supérieure si = ou > 0.50 ou arrondir unité
inférieure si < à 0.50
Merci d'avance.





Bonjour

Si tu veux la partie entière, utilise la fonction Ent() ou Int()
et pour arrondir à 2 décimales en respectant ta règle : Arrond() ou Round()
Exemple :
a = 12,34987
Int(a) retourne 12
Round(a) retourne 12,35

si a = 12,344987, Round(a) renvoie : 12,34

A+
Eric

Eric
Le #5373561
Me suis manqué sur la question 2 et j'ai pas tout donné sur la question 1

Complément pour le 1:
a-int(a) devrait faire l'affaire

Pour le 2 qui ne respecte pas la règle, il te suffit de prendre la partie
entiere si la partie decimale est < 0.5 sinon tu prends l'arrondi

Exemple:

Sub test()
Dim a As Double, b as integer, r as double, c as integer
a = 12,50001
b = Int(a)
r = a - b
If r < 0.5 Then
c = Int(a)
Else
c = Round(a)
End If
Debug.Print a, b, c, r
End Sub

ca donne :
12,50001 12 13 0,50001

avec a = 12.49987
12,49987 12 12 0,49987

Eric


Bonjour

Si tu veux la partie entière, utilise la fonction Ent() ou Int()
et pour arrondir à 2 décimales en respectant ta règle : Arrond() ou
Round() Exemple :
a = 12,34987
Int(a) retourne 12
Round(a) retourne 12,35

si a = 12,344987, Round(a) renvoie : 12,34

A+
Eric



Eric
Le #5373531
Eric
Sub test()
Dim a As Double, b as integer, r as double, c as integer
a = 12,50001
b = Int(a)
r = a - b
If r < 0.5 Then
c = Int(a)
Else
c = Round(a)
End If
Debug.Print a, b, c, r
End Sub


mais c'est pas bon pour 12.5 donc faut encore corriger et mettre :
c = Round(a+0.001)


J'y reviens plus dessus et j'entends déjà les critiques sifflées aux
oreilles. Doit y avoir certainement mieux.

3stone
Le #5373491
Salut,

"Eric"
J'y reviens plus dessus et j'entends déjà les critiques sifflées aux
oreilles. Doit y avoir certainement mieux.




J'ai pas compris... ou alors tout simplement :

a = 1.5
debug.print int(a+ 0.5)
=> 2

a = 1.499999
debug.print int(a + 0.5)
=> 1



--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------

Eric
Le #5373471
Bonsoir Pierre

Ayant mal interprété le 1er post et étant parti (mentalement) sur la
fonction Round(), je ne savais plus comment m'en sortir (horrible
engrenage), d'autant plus que j'avais donné un exemple foireux. D'où mon
autocritique.

Je savais bien qu'il y avait mieux et bien plus simple, tu en apportes la
preuve ;-)
A+
Eric


"3stone" @tk2msftngp13.phx.gbl:

Salut,

"Eric"
J'y reviens plus dessus et j'entends déjà les critiques sifflées aux
oreilles. Doit y avoir certainement mieux.




J'ai pas compris... ou alors tout simplement :

a = 1.5
debug.print int(a+ 0.5)
=> 2

a = 1.499999
debug.print int(a + 0.5)
=> 1



--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------







www.eztree-msdn.com \(Laurent Jordi\)
Le #5373461
Salut

Attention à la limite imposée par l'interger...

Je vous consille de passer par les long pour éviter les pbs...

@+

LJ
www.eztree-msdn.com

"3stone" news:OR%
Salut,

"Eric"
J'y reviens plus dessus et j'entends déjà les critiques sifflées aux
oreilles. Doit y avoir certainement mieux.




J'ai pas compris... ou alors tout simplement :

a = 1.5
debug.print int(a+ 0.5)
=> 2

a = 1.499999
debug.print int(a + 0.5)
=> 1



--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------







Publicité
Poster une réponse
Anonyme