Page 1 sur 1
division avec arrondi au nombre supérieur normal ou pas ?
Publié : mar. 22/juin/2004 22:14
par comtois
Je fais ça
Et comme mx1 est un long , je m'attendais à ce qu'il prenne la valeur 1 , or il prend la valeur 2 . Si je mets mx.l , là c'est ok , ça marche comme attendu . Bon pourquoi pas ,il suffit de le savoir , mais j'étais étonné , et surtout j'ai cherché un moment pourquoi j'avais des erreurs
Est-ce que ça vous semble normal ce résultat ?
Publié : mar. 22/juin/2004 22:22
par Backup
120/64=1.875
2= arrondi
car au dessus de 1.500 c'est egale a 2
et en dessous c'est egale a 1
c'est le principe de l'arrondi ça !!

moi je trouve ça normal !! (et mem pratique !! pour la compta !! )

Publié : mar. 22/juin/2004 23:02
par comtois
Ben ça se défend
Jétais persuadé qu'en prenant un entier , je n'aurais que la partie entière en résultat. Bon , pas grave , il suffit de le savoir .
Maintenant je fais comme ça
Publié : mer. 23/juin/2004 0:01
par Backup
j'allais le dire int() sert à ça !!

Publié : mer. 23/juin/2004 8:30
par Dr. Dri
Dobro a écrit :120/64=1.875
2= arrondi
car au dessus de 1.500 c'est egale a 2
et en dessous c'est egale a 1
c'est le principe de l'arrondi ça !!

moi je trouve ça normal !! (et mem pratique !! pour la compta !! )

un arrondi "au dessus" c'est à partir de 1.5 et pas au delà

Sinon je pense qu'une division d'entier devrait etre entiere... Et pas arrondie... Mais comme dis comtois l'essentiel c'est de le savoir... Et je crois que ca m'a fait comprendre pourquoi un de mes portages DB vers PB ne fonctionne pas du tout...
Dri
Publié : mer. 23/juin/2004 16:42
par fweil
Code : Tout sélectionner
mx.f = 64
mx1 = 120/mx
Debug mx1
nx.l = 64
nx1 = 120/nx
Debug nx1
donne
2
1
dans le debugger ce qui correspond bien à un comportement cohérent :
- si la division est basée sur des entiers en totalité le calcul se fait en entiers et donc le résultat est bien équivalent à Int().
- si la division contient un ou plusieurs flottants, le calcul est réalisé en flottant et le résultat est arrondi à la valeur entière la plus proche avant d'être affecté à la variable.
Le code généré en ASM montre bien ce comportement.
Slts