sub toto()
dim t as integer
t=1163.45 * 100
end sub
En gros d apres ce que je comprend le int() ca convertit un nombre en Integer hors le type integer est limité en taille donc , si il lui donne un trop gros truc il bug !
Je comprends, mais en fait je ne veux pas faire ça.
En fait, sur un autre fil, le problème consiste à tester pour savoir si un nombre quelconque (dans une cellule) a plus de 2 décimales. D'où mon test avec Int(100*x).
Je pensais que ce test, très simple, fonctionnerait. Au début, j'avais testé la chaine de caractères avec des Like, ça marche évidemment très bien, mais c'est un peu compliqué.
Les explications de Microsoft ne tiennent pas la route. On lit sous le lien donné par Catrice :
Dans l'exemple précédent, la valeur 59.3 pose un problème. La
représentation binaire de 59.3 est 59.29999999999999, le résultat de
l'expression 59.29999999999*100 est 5929.999999999999. La fonction Int
n'arrondit pas la valeur de l'expression, mais la tronque, d'où le
résultat 5929.
Sauf que la représentation binaire de 59.3 est 111011.01001 (59.3=32+16+8+2+1+1/4+1/32+1/64+1/512+1/1024+1/8192+...)
Ce qui est vrai est que le développement binaire de 59.3 est illimité, la séquence 1001 se répétant indéfiniment. Faute d'un algorithme suffisamment élaboré, la fonction Int renvoie n'importe quoi. Pour vous en convaincre, testez
Code:
Sub ComprendsPas()
Dim x As Double, test As Boolean, y As Double
x = 59.3
test = 100 * x > Int(100 * x)
MsgBox test
test = 100 * x > (100 * x) \ 1
MsgBox test
End Sub
Le premier test renvoie Vrai, le deuxième renvoie Faux.
Vous pouvez faire le test avec x = 1164.34 : le résultat est identique.
Vous remarquerez aussi que la formule Excel
Code:
=100*59.3>ENT(100*59.3)
renvoie, fort justement, Faux. Ce qui prouve que si, pour la même représentation binaire d'un nombre, l'algorithme de la fonction est correct, le résultat l'est aussi.
Mais qu'attendre d'autre venant de gens qui ont vu un 29 février en 1900 ?
Bonne nuit ! ROGER2327
_______________________
Ajout : en fait, je ne devrais pas dire :