Bonjour,
Je viens de remarquer un prbl dans mon programme, en faisant :
msgbox 8.12 - 8 j'ai 0.11999999999
Pour moi 8.12 - 8 = 0.12, visiblement c'est pas le cas de VB
Si quelqu'un a des infos sur le sujet ou une methode plus juste pour
calculer, je vous remercie d'avance.
Cordialement.
Damien
Bonjour,
Je viens de remarquer un prbl dans mon programme, en faisant :
msgbox 8.12 - 8 j'ai 0.11999999999
Pour moi 8.12 - 8 = 0.12, visiblement c'est pas le cas de VB
Si quelqu'un a des infos sur le sujet ou une methode plus juste pour
calculer, je vous remercie d'avance.
Cordialement.
Damien
Bonjour,
Je viens de remarquer un prbl dans mon programme, en faisant :
msgbox 8.12 - 8 j'ai 0.11999999999
Pour moi 8.12 - 8 = 0.12, visiblement c'est pas le cas de VB
Si quelqu'un a des infos sur le sujet ou une methode plus juste pour
calculer, je vous remercie d'avance.
Cordialement.
Damien
util a écrit :Bonjour,
Je viens de remarquer un prbl dans mon programme, en faisant :
msgbox 8.12 - 8 j'ai 0.11999999999
Pour moi 8.12 - 8 = 0.12, visiblement c'est pas le cas de VB
Si quelqu'un a des infos sur le sujet ou une methode plus juste pour
calculer, je vous remercie d'avance.
Cordialement.
Damien
Bienvenue dans le monde des calculs numérique!
8.12 est par défaut converti en double. Le type double a une
représentation binaire en mémoire définie (dans une norme IEEE, mais je
sais plus son numéro). Cette représentation ne peux bien sur pas exprimer
_toutes_ les valeurs possibles, puisqu'il existe une infinité de valeurs
et l'espace est limité en mémoire. Il se trouve donc simplement que 8.12
et/ou 8.0 et/ou 0.12 et/ou une des valeurs intermédiaire dans un des
registres du CPU ne sont pas représentables dans le type en question, et
c'est donc la valeur la plus proche représentable qui est en fait
mémorisée. C'est d'ailleurs pour des raisons comme celles-ci qu'on utilise
pas les doubles pour faire des calculs banquaires par exemple.
Tu peux au choix travailler avec des entiers en virgule fixe (en
multipliant par exemple par 1000 et en replacant la virgule juste pour
l'affichage: 8120 - 800 = 120 -> 0.120) ou en utilisant des types
spécialement développés dans cette optique (en VB, Decimal ou Currency par
exemple)
Vincnet Guichard
Dim val1S As Double, val2S As Double
Dim val1C As Currency, val2C As Currency
Dim val1D As Variant, val2D As Variant 'Decimal est un sous-type variant
Dim val1L As Long, val2L As Long
val1S = 8.12
val2S = 8
val1C = 8.12
val2C = 8
val1D = CDec(8.12)
val2D = CDec(8)
val1L = 8.12 * 1000
val2L = 8 * 1000
MsgBox val1S - val2S
MsgBox val1C - val2C
MsgBox val1D - val2D
MsgBox (val1L - val2L) / 1000
util a écrit :
Bonjour,
Je viens de remarquer un prbl dans mon programme, en faisant :
msgbox 8.12 - 8 j'ai 0.11999999999
Pour moi 8.12 - 8 = 0.12, visiblement c'est pas le cas de VB
Si quelqu'un a des infos sur le sujet ou une methode plus juste pour
calculer, je vous remercie d'avance.
Cordialement.
Damien
Bienvenue dans le monde des calculs numérique!
8.12 est par défaut converti en double. Le type double a une
représentation binaire en mémoire définie (dans une norme IEEE, mais je
sais plus son numéro). Cette représentation ne peux bien sur pas exprimer
_toutes_ les valeurs possibles, puisqu'il existe une infinité de valeurs
et l'espace est limité en mémoire. Il se trouve donc simplement que 8.12
et/ou 8.0 et/ou 0.12 et/ou une des valeurs intermédiaire dans un des
registres du CPU ne sont pas représentables dans le type en question, et
c'est donc la valeur la plus proche représentable qui est en fait
mémorisée. C'est d'ailleurs pour des raisons comme celles-ci qu'on utilise
pas les doubles pour faire des calculs banquaires par exemple.
Tu peux au choix travailler avec des entiers en virgule fixe (en
multipliant par exemple par 1000 et en replacant la virgule juste pour
l'affichage: 8120 - 800 = 120 -> 0.120) ou en utilisant des types
spécialement développés dans cette optique (en VB, Decimal ou Currency par
exemple)
Vincnet Guichard
Dim val1S As Double, val2S As Double
Dim val1C As Currency, val2C As Currency
Dim val1D As Variant, val2D As Variant 'Decimal est un sous-type variant
Dim val1L As Long, val2L As Long
val1S = 8.12
val2S = 8
val1C = 8.12
val2C = 8
val1D = CDec(8.12)
val2D = CDec(8)
val1L = 8.12 * 1000
val2L = 8 * 1000
MsgBox val1S - val2S
MsgBox val1C - val2C
MsgBox val1D - val2D
MsgBox (val1L - val2L) / 1000
util a écrit :Bonjour,
Je viens de remarquer un prbl dans mon programme, en faisant :
msgbox 8.12 - 8 j'ai 0.11999999999
Pour moi 8.12 - 8 = 0.12, visiblement c'est pas le cas de VB
Si quelqu'un a des infos sur le sujet ou une methode plus juste pour
calculer, je vous remercie d'avance.
Cordialement.
Damien
Bienvenue dans le monde des calculs numérique!
8.12 est par défaut converti en double. Le type double a une
représentation binaire en mémoire définie (dans une norme IEEE, mais je
sais plus son numéro). Cette représentation ne peux bien sur pas exprimer
_toutes_ les valeurs possibles, puisqu'il existe une infinité de valeurs
et l'espace est limité en mémoire. Il se trouve donc simplement que 8.12
et/ou 8.0 et/ou 0.12 et/ou une des valeurs intermédiaire dans un des
registres du CPU ne sont pas représentables dans le type en question, et
c'est donc la valeur la plus proche représentable qui est en fait
mémorisée. C'est d'ailleurs pour des raisons comme celles-ci qu'on utilise
pas les doubles pour faire des calculs banquaires par exemple.
Tu peux au choix travailler avec des entiers en virgule fixe (en
multipliant par exemple par 1000 et en replacant la virgule juste pour
l'affichage: 8120 - 800 = 120 -> 0.120) ou en utilisant des types
spécialement développés dans cette optique (en VB, Decimal ou Currency par
exemple)
Vincnet Guichard
Dim val1S As Double, val2S As Double
Dim val1C As Currency, val2C As Currency
Dim val1D As Variant, val2D As Variant 'Decimal est un sous-type variant
Dim val1L As Long, val2L As Long
val1S = 8.12
val2S = 8
val1C = 8.12
val2C = 8
val1D = CDec(8.12)
val2D = CDec(8)
val1L = 8.12 * 1000
val2L = 8 * 1000
MsgBox val1S - val2S
MsgBox val1C - val2C
MsgBox val1D - val2D
MsgBox (val1L - val2L) / 1000
Bonjour,
Je viens de remarquer un prbl dans mon programme, en faisant :
msgbox 8.12 - 8 j'ai 0.11999999999
Pour moi 8.12 - 8 = 0.12, visiblement c'est pas le cas de VB
Si quelqu'un a des infos sur le sujet ou une methode plus juste pour
calculer, je vous remercie d'avance.
Bonjour,
Je viens de remarquer un prbl dans mon programme, en faisant :
msgbox 8.12 - 8 j'ai 0.11999999999
Pour moi 8.12 - 8 = 0.12, visiblement c'est pas le cas de VB
Si quelqu'un a des infos sur le sujet ou une methode plus juste pour
calculer, je vous remercie d'avance.
Bonjour,
Je viens de remarquer un prbl dans mon programme, en faisant :
msgbox 8.12 - 8 j'ai 0.11999999999
Pour moi 8.12 - 8 = 0.12, visiblement c'est pas le cas de VB
Si quelqu'un a des infos sur le sujet ou une methode plus juste pour
calculer, je vous remercie d'avance.
util a écrit :Bonjour,
Je viens de remarquer un prbl dans mon programme, en faisant :
msgbox 8.12 - 8 j'ai 0.11999999999
Pour moi 8.12 - 8 = 0.12, visiblement c'est pas le cas de VB
Si quelqu'un a des infos sur le sujet ou une methode plus juste pour
calculer, je vous remercie d'avance.
Cordialement.
Damien
Bienvenue dans le monde des calculs numérique!
8.12 est par défaut converti en double. Le type double a une
représentation binaire en mémoire définie (dans une norme IEEE, mais je
sais plus son numéro). Cette représentation ne peux bien sur pas
exprimer _toutes_ les valeurs possibles, puisqu'il existe une infinité
de valeurs et l'espace est limité en mémoire. Il se trouve donc
simplement que 8.12 et/ou 8.0 et/ou 0.12 et/ou une des valeurs
intermédiaire dans un des registres du CPU ne sont pas représentables
dans le type en question, et c'est donc la valeur la plus proche
représentable qui est en fait mémorisée. C'est d'ailleurs pour des
raisons comme celles-ci qu'on utilise pas les doubles pour faire des
calculs banquaires par exemple.
Tu peux au choix travailler avec des entiers en virgule fixe (en
multipliant par exemple par 1000 et en replacant la virgule juste pour
l'affichage: 8120 - 800 = 120 -> 0.120) ou en utilisant des types
spécialement développés dans cette optique (en VB, Decimal ou Currency
par exemple)
Vincnet Guichard
Dim val1S As Double, val2S As Double
Dim val1C As Currency, val2C As Currency
Dim val1D As Variant, val2D As Variant 'Decimal est un sous-type variant
Dim val1L As Long, val2L As Long
val1S = 8.12
val2S = 8
val1C = 8.12
val2C = 8
val1D = CDec(8.12)
val2D = CDec(8)
val1L = 8.12 * 1000
val2L = 8 * 1000
MsgBox val1S - val2S
MsgBox val1C - val2C
MsgBox val1D - val2D
MsgBox (val1L - val2L) / 1000
util a écrit :
Bonjour,
Je viens de remarquer un prbl dans mon programme, en faisant :
msgbox 8.12 - 8 j'ai 0.11999999999
Pour moi 8.12 - 8 = 0.12, visiblement c'est pas le cas de VB
Si quelqu'un a des infos sur le sujet ou une methode plus juste pour
calculer, je vous remercie d'avance.
Cordialement.
Damien
Bienvenue dans le monde des calculs numérique!
8.12 est par défaut converti en double. Le type double a une
représentation binaire en mémoire définie (dans une norme IEEE, mais je
sais plus son numéro). Cette représentation ne peux bien sur pas
exprimer _toutes_ les valeurs possibles, puisqu'il existe une infinité
de valeurs et l'espace est limité en mémoire. Il se trouve donc
simplement que 8.12 et/ou 8.0 et/ou 0.12 et/ou une des valeurs
intermédiaire dans un des registres du CPU ne sont pas représentables
dans le type en question, et c'est donc la valeur la plus proche
représentable qui est en fait mémorisée. C'est d'ailleurs pour des
raisons comme celles-ci qu'on utilise pas les doubles pour faire des
calculs banquaires par exemple.
Tu peux au choix travailler avec des entiers en virgule fixe (en
multipliant par exemple par 1000 et en replacant la virgule juste pour
l'affichage: 8120 - 800 = 120 -> 0.120) ou en utilisant des types
spécialement développés dans cette optique (en VB, Decimal ou Currency
par exemple)
Vincnet Guichard
Dim val1S As Double, val2S As Double
Dim val1C As Currency, val2C As Currency
Dim val1D As Variant, val2D As Variant 'Decimal est un sous-type variant
Dim val1L As Long, val2L As Long
val1S = 8.12
val2S = 8
val1C = 8.12
val2C = 8
val1D = CDec(8.12)
val2D = CDec(8)
val1L = 8.12 * 1000
val2L = 8 * 1000
MsgBox val1S - val2S
MsgBox val1C - val2C
MsgBox val1D - val2D
MsgBox (val1L - val2L) / 1000
util a écrit :Bonjour,
Je viens de remarquer un prbl dans mon programme, en faisant :
msgbox 8.12 - 8 j'ai 0.11999999999
Pour moi 8.12 - 8 = 0.12, visiblement c'est pas le cas de VB
Si quelqu'un a des infos sur le sujet ou une methode plus juste pour
calculer, je vous remercie d'avance.
Cordialement.
Damien
Bienvenue dans le monde des calculs numérique!
8.12 est par défaut converti en double. Le type double a une
représentation binaire en mémoire définie (dans une norme IEEE, mais je
sais plus son numéro). Cette représentation ne peux bien sur pas
exprimer _toutes_ les valeurs possibles, puisqu'il existe une infinité
de valeurs et l'espace est limité en mémoire. Il se trouve donc
simplement que 8.12 et/ou 8.0 et/ou 0.12 et/ou une des valeurs
intermédiaire dans un des registres du CPU ne sont pas représentables
dans le type en question, et c'est donc la valeur la plus proche
représentable qui est en fait mémorisée. C'est d'ailleurs pour des
raisons comme celles-ci qu'on utilise pas les doubles pour faire des
calculs banquaires par exemple.
Tu peux au choix travailler avec des entiers en virgule fixe (en
multipliant par exemple par 1000 et en replacant la virgule juste pour
l'affichage: 8120 - 800 = 120 -> 0.120) ou en utilisant des types
spécialement développés dans cette optique (en VB, Decimal ou Currency
par exemple)
Vincnet Guichard
Dim val1S As Double, val2S As Double
Dim val1C As Currency, val2C As Currency
Dim val1D As Variant, val2D As Variant 'Decimal est un sous-type variant
Dim val1L As Long, val2L As Long
val1S = 8.12
val2S = 8
val1C = 8.12
val2C = 8
val1D = CDec(8.12)
val2D = CDec(8)
val1L = 8.12 * 1000
val2L = 8 * 1000
MsgBox val1S - val2S
MsgBox val1C - val2C
MsgBox val1D - val2D
MsgBox (val1L - val2L) / 1000
> Par ailleurs, tout petit détail, je viens de
m'apercevoir que CDec n'est pas reconnu en tant que mot-clé (pas de
coloration syntaxique). Mystère ...
> Par ailleurs, tout petit détail, je viens de
m'apercevoir que CDec n'est pas reconnu en tant que mot-clé (pas de
coloration syntaxique). Mystère ...
> Par ailleurs, tout petit détail, je viens de
m'apercevoir que CDec n'est pas reconnu en tant que mot-clé (pas de
coloration syntaxique). Mystère ...
Bonjour,
Je viens de remarquer un prbl dans mon programme, en faisant :
msgbox 8.12 - 8 j'ai 0.11999999999
Pour moi 8.12 - 8 = 0.12, visiblement c'est pas le cas de VB
Si quelqu'un a des infos sur le sujet ou une methode plus juste pour
calculer, je vous remercie d'avance.
Cordialement.
Damien
Bonjour,
Je viens de remarquer un prbl dans mon programme, en faisant :
msgbox 8.12 - 8 j'ai 0.11999999999
Pour moi 8.12 - 8 = 0.12, visiblement c'est pas le cas de VB
Si quelqu'un a des infos sur le sujet ou une methode plus juste pour
calculer, je vous remercie d'avance.
Cordialement.
Damien
Bonjour,
Je viens de remarquer un prbl dans mon programme, en faisant :
msgbox 8.12 - 8 j'ai 0.11999999999
Pour moi 8.12 - 8 = 0.12, visiblement c'est pas le cas de VB
Si quelqu'un a des infos sur le sujet ou une methode plus juste pour
calculer, je vous remercie d'avance.
Cordialement.
Damien
Par ailleurs, tout petit détail, je viens de m'apercevoir que CDec
n'est pas reconnu en tant que mot-clé (pas de coloration syntaxique).
Mystère ...
En effet, CDec ,'est pas un mot clef. c'est probablement parce que,
contrairement à Currency, Decimal n'est pas un type à part entière,
c'est un sous type de Variant (on ne peut pas faire de Dim D as Decimal)
Par ailleurs, tout petit détail, je viens de m'apercevoir que CDec
n'est pas reconnu en tant que mot-clé (pas de coloration syntaxique).
Mystère ...
En effet, CDec ,'est pas un mot clef. c'est probablement parce que,
contrairement à Currency, Decimal n'est pas un type à part entière,
c'est un sous type de Variant (on ne peut pas faire de Dim D as Decimal)
Par ailleurs, tout petit détail, je viens de m'apercevoir que CDec
n'est pas reconnu en tant que mot-clé (pas de coloration syntaxique).
Mystère ...
En effet, CDec ,'est pas un mot clef. c'est probablement parce que,
contrairement à Currency, Decimal n'est pas un type à part entière,
c'est un sous type de Variant (on ne peut pas faire de Dim D as Decimal)
Bonjour
Soustraction 8.12 - 8
Vous pouvez aussi utiliser l'instruction Format :
MsgBox Format(8.12 - 8,"0.00")
--
Bonne réception.
http://perso.orange.fr/andre.araste/
Membre du Club Win's: http://www.clubwins.org
Avertissement: Je ne vends rien.
<util> a écrit dans le message de news:
Bonjour,
Je viens de remarquer un prbl dans mon programme, en faisant :
msgbox 8.12 - 8 j'ai 0.11999999999
Pour moi 8.12 - 8 = 0.12, visiblement c'est pas le cas de VB
Si quelqu'un a des infos sur le sujet ou une methode plus juste pour
calculer, je vous remercie d'avance.
Cordialement.
Damien
Bonjour
Soustraction 8.12 - 8
Vous pouvez aussi utiliser l'instruction Format :
MsgBox Format(8.12 - 8,"0.00")
--
Bonne réception.
andre.araste@wanadoo.fr
http://perso.orange.fr/andre.araste/
Membre du Club Win's: http://www.clubwins.org
Avertissement: Je ne vends rien.
<util> a écrit dans le message de news:
emSiasOrHHA.500@TK2MSFTNGP02.phx.gbl...
Bonjour,
Je viens de remarquer un prbl dans mon programme, en faisant :
msgbox 8.12 - 8 j'ai 0.11999999999
Pour moi 8.12 - 8 = 0.12, visiblement c'est pas le cas de VB
Si quelqu'un a des infos sur le sujet ou une methode plus juste pour
calculer, je vous remercie d'avance.
Cordialement.
Damien
Bonjour
Soustraction 8.12 - 8
Vous pouvez aussi utiliser l'instruction Format :
MsgBox Format(8.12 - 8,"0.00")
--
Bonne réception.
http://perso.orange.fr/andre.araste/
Membre du Club Win's: http://www.clubwins.org
Avertissement: Je ne vends rien.
<util> a écrit dans le message de news:
Bonjour,
Je viens de remarquer un prbl dans mon programme, en faisant :
msgbox 8.12 - 8 j'ai 0.11999999999
Pour moi 8.12 - 8 = 0.12, visiblement c'est pas le cas de VB
Si quelqu'un a des infos sur le sujet ou une methode plus juste pour
calculer, je vous remercie d'avance.
Cordialement.
Damien