OVH Cloud OVH Cloud

nombre / décimales

6 réponses
Avatar
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.

6 réponses

Avatar
Eric
" jean luc" écrivait news:4093ee95$0$22990
$:

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

Avatar
Eric
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



Avatar
Eric
Eric écrivait :

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.

Avatar
3stone
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
-----------------------------

Avatar
Eric
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" écrivait news:OR#mWF8LEHA.3012
@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
-----------------------------







Avatar
www.eztree-msdn.com \(Laurent Jordi\)
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" a écrit dans le message de
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
-----------------------------