Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
michdenis
Bonjour Garnote,
Voici quelques alternatives :
Ta variable est déclaré "As Double" ... Int() n'est pas une fonction de conversion !
'----------------------------- Sub Valeur_Entière1() Dim nombre As Integer nombre = 316.84 * 100 MsgBox Int(nombre) & vbNewLine & nombre 1 End Sub '-----------------------------
Sub Valeur_Entière2() Dim nombre As Integer nombre = 316.84 * 100 MsgBox CInt(nombre) & vbNewLine & nombre 1 End Sub '-----------------------------
Sub Valeur_Entière3() Dim nombre As Variant nombre = 316.84 * 100 MsgBox CLng(nombre) & vbNewLine & nombre 1 End Sub '----------------------------- Sub Valeur_Entière4() Dim nombre As Double nombre = 316.84 * 100 MsgBox CLng(nombre) & vbNewLine & nombre 1 End Sub '----------------------------- Sub Valeur_Entière5() Dim nombre As Double nombre = 316.84 * 100 MsgBox CInt(nombre) & vbNewLine & nombre 1 End Sub '-----------------------------
Salutations!
"garnote" a écrit dans le message de news:D3VCc.14455$ Bonjour,
Mais quand donc faut-il se méfier de Int ?
Sub Valeur_Entière() Dim nombre As Double nombre = 316.84 * 100 MsgBox Int(nombre) & vbNewLine & nombre 1 End Sub
Serge
Bonjour Garnote,
Voici quelques alternatives :
Ta variable est déclaré "As Double" ... Int() n'est pas une fonction de conversion !
'-----------------------------
Sub Valeur_Entière1()
Dim nombre As Integer
nombre = 316.84 * 100
MsgBox Int(nombre) & vbNewLine & nombre 1
End Sub
'-----------------------------
Sub Valeur_Entière2()
Dim nombre As Integer
nombre = 316.84 * 100
MsgBox CInt(nombre) & vbNewLine & nombre 1
End Sub
'-----------------------------
Sub Valeur_Entière3()
Dim nombre As Variant
nombre = 316.84 * 100
MsgBox CLng(nombre) & vbNewLine & nombre 1
End Sub
'-----------------------------
Sub Valeur_Entière4()
Dim nombre As Double
nombre = 316.84 * 100
MsgBox CLng(nombre) & vbNewLine & nombre 1
End Sub
'-----------------------------
Sub Valeur_Entière5()
Dim nombre As Double
nombre = 316.84 * 100
MsgBox CInt(nombre) & vbNewLine & nombre 1
End Sub
'-----------------------------
Salutations!
"garnote" <rien@absent.net> a écrit dans le message de news:D3VCc.14455$HS3.12983@edtnps84...
Bonjour,
Mais quand donc faut-il se méfier de Int ?
Sub Valeur_Entière()
Dim nombre As Double
nombre = 316.84 * 100
MsgBox Int(nombre) & vbNewLine & nombre 1
End Sub
Ta variable est déclaré "As Double" ... Int() n'est pas une fonction de conversion !
'----------------------------- Sub Valeur_Entière1() Dim nombre As Integer nombre = 316.84 * 100 MsgBox Int(nombre) & vbNewLine & nombre 1 End Sub '-----------------------------
Sub Valeur_Entière2() Dim nombre As Integer nombre = 316.84 * 100 MsgBox CInt(nombre) & vbNewLine & nombre 1 End Sub '-----------------------------
Sub Valeur_Entière3() Dim nombre As Variant nombre = 316.84 * 100 MsgBox CLng(nombre) & vbNewLine & nombre 1 End Sub '----------------------------- Sub Valeur_Entière4() Dim nombre As Double nombre = 316.84 * 100 MsgBox CLng(nombre) & vbNewLine & nombre 1 End Sub '----------------------------- Sub Valeur_Entière5() Dim nombre As Double nombre = 316.84 * 100 MsgBox CInt(nombre) & vbNewLine & nombre 1 End Sub '-----------------------------
Salutations!
"garnote" a écrit dans le message de news:D3VCc.14455$ Bonjour,
Mais quand donc faut-il se méfier de Int ?
Sub Valeur_Entière() Dim nombre As Double nombre = 316.84 * 100 MsgBox Int(nombre) & vbNewLine & nombre 1 End Sub
Serge
garnote
Alors là, j'en ai plus que j'en voulais :-)
Serge
"michdenis" a écrit dans le message de news:
Bonjour Garnote,
Voici quelques alternatives :
Ta variable est déclaré "As Double" ... Int() n'est pas une fonction de conversion !
'----------------------------- Sub Valeur_Entière1() Dim nombre As Integer nombre = 316.84 * 100 MsgBox Int(nombre) & vbNewLine & nombre 1 End Sub '-----------------------------
Sub Valeur_Entière2() Dim nombre As Integer nombre = 316.84 * 100 MsgBox CInt(nombre) & vbNewLine & nombre 1 End Sub '-----------------------------
Sub Valeur_Entière3() Dim nombre As Variant nombre = 316.84 * 100 MsgBox CLng(nombre) & vbNewLine & nombre 1 End Sub '----------------------------- Sub Valeur_Entière4() Dim nombre As Double nombre = 316.84 * 100 MsgBox CLng(nombre) & vbNewLine & nombre 1 End Sub '----------------------------- Sub Valeur_Entière5() Dim nombre As Double nombre = 316.84 * 100 MsgBox CInt(nombre) & vbNewLine & nombre 1 End Sub '-----------------------------
Salutations!
"garnote" a écrit dans le message de news:D3VCc.14455$
Bonjour,
Mais quand donc faut-il se méfier de Int ?
Sub Valeur_Entière() Dim nombre As Double nombre = 316.84 * 100 MsgBox Int(nombre) & vbNewLine & nombre 1 End Sub
Serge
Alors là, j'en ai plus que j'en voulais :-)
Serge
"michdenis" <michdenis@hotmail.com> a écrit dans le message de news:
u3Ai9WrWEHA.4020@TK2MSFTNGP09.phx.gbl...
Bonjour Garnote,
Voici quelques alternatives :
Ta variable est déclaré "As Double" ... Int() n'est pas une fonction de
conversion !
'-----------------------------
Sub Valeur_Entière1()
Dim nombre As Integer
nombre = 316.84 * 100
MsgBox Int(nombre) & vbNewLine & nombre 1
End Sub
'-----------------------------
Sub Valeur_Entière2()
Dim nombre As Integer
nombre = 316.84 * 100
MsgBox CInt(nombre) & vbNewLine & nombre 1
End Sub
'-----------------------------
Sub Valeur_Entière3()
Dim nombre As Variant
nombre = 316.84 * 100
MsgBox CLng(nombre) & vbNewLine & nombre 1
End Sub
'-----------------------------
Sub Valeur_Entière4()
Dim nombre As Double
nombre = 316.84 * 100
MsgBox CLng(nombre) & vbNewLine & nombre 1
End Sub
'-----------------------------
Sub Valeur_Entière5()
Dim nombre As Double
nombre = 316.84 * 100
MsgBox CInt(nombre) & vbNewLine & nombre 1
End Sub
'-----------------------------
Salutations!
"garnote" <rien@absent.net> a écrit dans le message de
news:D3VCc.14455$HS3.12983@edtnps84...
Bonjour,
Mais quand donc faut-il se méfier de Int ?
Sub Valeur_Entière()
Dim nombre As Double
nombre = 316.84 * 100
MsgBox Int(nombre) & vbNewLine & nombre 1
End Sub
Ta variable est déclaré "As Double" ... Int() n'est pas une fonction de conversion !
'----------------------------- Sub Valeur_Entière1() Dim nombre As Integer nombre = 316.84 * 100 MsgBox Int(nombre) & vbNewLine & nombre 1 End Sub '-----------------------------
Sub Valeur_Entière2() Dim nombre As Integer nombre = 316.84 * 100 MsgBox CInt(nombre) & vbNewLine & nombre 1 End Sub '-----------------------------
Sub Valeur_Entière3() Dim nombre As Variant nombre = 316.84 * 100 MsgBox CLng(nombre) & vbNewLine & nombre 1 End Sub '----------------------------- Sub Valeur_Entière4() Dim nombre As Double nombre = 316.84 * 100 MsgBox CLng(nombre) & vbNewLine & nombre 1 End Sub '----------------------------- Sub Valeur_Entière5() Dim nombre As Double nombre = 316.84 * 100 MsgBox CInt(nombre) & vbNewLine & nombre 1 End Sub '-----------------------------
Salutations!
"garnote" a écrit dans le message de news:D3VCc.14455$
Bonjour,
Mais quand donc faut-il se méfier de Int ?
Sub Valeur_Entière() Dim nombre As Double nombre = 316.84 * 100 MsgBox Int(nombre) & vbNewLine & nombre 1 End Sub
Serge
Nicolas B.
Salut,
Sans m'aventurer trop loin dans les décimales, il semble que : 316,84*100 = 31683,999999999996362...
Voilà d'où sort ce résultat : Dim nombre As Double nombre = 316.84 * 100 MsgBox nombre - 31683
A+ -- Nicolas B.
Bonjour,
Mais quand donc faut-il se méfier de Int ?
Sub Valeur_Entière() Dim nombre As Double nombre = 316.84 * 100 MsgBox Int(nombre) & vbNewLine & nombre 1 End Sub
Serge
Salut,
Sans m'aventurer trop loin dans les décimales, il semble que :
316,84*100 = 31683,999999999996362...
Voilà d'où sort ce résultat :
Dim nombre As Double
nombre = 316.84 * 100
MsgBox nombre - 31683
A+
--
Nicolas B.
Bonjour,
Mais quand donc faut-il se méfier de Int ?
Sub Valeur_Entière()
Dim nombre As Double
nombre = 316.84 * 100
MsgBox Int(nombre) & vbNewLine & nombre 1
End Sub
Avec la fonction de feuille de calcul (pour Round aussi) et un petit coup d'Evaluate, on évite ça :
MsgBox Evaluate("int(" & nombre & ")")
AV
Rv
Salut,
Pour moi ce n'est pas étonnant étant donné qu'un nombre réél peut s'exprimer avec une infinité de chiffre après la virgule et que dans le codage d'un réel il y a un nombre fini de bits (64 bits sur double). Je sais ici 316.84 est plutôt un décimal. Mais sur le principe 316.84 ne sera pas codé de façon exacte s'il est converti en réel. Ce sera 316.84 + ou - une marge d'erreur. Dans ce cas l'erreur est apparement de l'odre de -2,50111042987555E-14 donc en fait 316.84 est codé en 316.8399999999999749... On s'en rend compte en faisant un msgbox 316.84*100-31684 Donc ce n'est pas le int qui cloche. Il fait bien son boulot. C'est plutôt un problème de représentation de l'information. Il nous faudrait un type décimal!
A+
Rv
"garnote" a écrit dans le message de news:D3VCc.14455$
Bonjour,
Mais quand donc faut-il se méfier de Int ?
Sub Valeur_Entière() Dim nombre As Double nombre = 316.84 * 100 MsgBox Int(nombre) & vbNewLine & nombre 1 End Sub
Serge
Salut,
Pour moi ce n'est pas étonnant étant donné qu'un nombre réél peut
s'exprimer avec une infinité de chiffre après la virgule et que dans le
codage d'un réel il y a un nombre fini de bits (64 bits sur double). Je sais
ici 316.84 est plutôt un décimal. Mais sur le principe 316.84 ne sera pas
codé de façon exacte s'il est converti en réel. Ce sera 316.84 + ou - une
marge d'erreur. Dans ce cas l'erreur est apparement de l'odre
de -2,50111042987555E-14 donc en fait 316.84 est codé en
316.8399999999999749... On s'en rend compte en faisant un msgbox
316.84*100-31684
Donc ce n'est pas le int qui cloche. Il fait bien son boulot. C'est plutôt
un problème de représentation de l'information. Il nous faudrait un type
décimal!
A+
Rv
"garnote" <rien@absent.net> a écrit dans le message de
news:D3VCc.14455$HS3.12983@edtnps84...
Bonjour,
Mais quand donc faut-il se méfier de Int ?
Sub Valeur_Entière()
Dim nombre As Double
nombre = 316.84 * 100
MsgBox Int(nombre) & vbNewLine & nombre 1
End Sub
Pour moi ce n'est pas étonnant étant donné qu'un nombre réél peut s'exprimer avec une infinité de chiffre après la virgule et que dans le codage d'un réel il y a un nombre fini de bits (64 bits sur double). Je sais ici 316.84 est plutôt un décimal. Mais sur le principe 316.84 ne sera pas codé de façon exacte s'il est converti en réel. Ce sera 316.84 + ou - une marge d'erreur. Dans ce cas l'erreur est apparement de l'odre de -2,50111042987555E-14 donc en fait 316.84 est codé en 316.8399999999999749... On s'en rend compte en faisant un msgbox 316.84*100-31684 Donc ce n'est pas le int qui cloche. Il fait bien son boulot. C'est plutôt un problème de représentation de l'information. Il nous faudrait un type décimal!
A+
Rv
"garnote" a écrit dans le message de news:D3VCc.14455$
Bonjour,
Mais quand donc faut-il se méfier de Int ?
Sub Valeur_Entière() Dim nombre As Double nombre = 316.84 * 100 MsgBox Int(nombre) & vbNewLine & nombre 1 End Sub
Serge
garnote
Si le premier chiffre de 316.84 est différent de 3, Int donne le bon résultat. Tout de même curieux, non ?
Serge « Docteur, ma femme est clouée au lit, je souhaiterais que vous la vissiez. »
"Rv" a écrit dans le message de news:
Salut,
Pour moi ce n'est pas étonnant étant donné qu'un nombre réél peut s'exprimer avec une infinité de chiffre après la virgule et que dans le codage d'un réel il y a un nombre fini de bits (64 bits sur double). Je sais
ici 316.84 est plutôt un décimal. Mais sur le principe 316.84 ne sera pas codé de façon exacte s'il est converti en réel. Ce sera 316.84 + ou - une marge d'erreur. Dans ce cas l'erreur est apparement de l'odre de -2,50111042987555E-14 donc en fait 316.84 est codé en 316.8399999999999749... On s'en rend compte en faisant un msgbox 316.84*100-31684 Donc ce n'est pas le int qui cloche. Il fait bien son boulot. C'est plutôt un problème de représentation de l'information. Il nous faudrait un type décimal!
A+
Rv
"garnote" a écrit dans le message de news:D3VCc.14455$
Bonjour,
Mais quand donc faut-il se méfier de Int ?
Sub Valeur_Entière() Dim nombre As Double nombre = 316.84 * 100 MsgBox Int(nombre) & vbNewLine & nombre 1 End Sub
Serge
Si le premier chiffre de 316.84 est différent de 3,
Int donne le bon résultat.
Tout de même curieux, non ?
Serge
« Docteur, ma femme est clouée au lit, je souhaiterais
que vous la vissiez. »
"Rv" <herve.pinardPASDESPAM@free.fr> a écrit dans le message de news:
uqRHOgrWEHA.2928@tk2msftngp13.phx.gbl...
Salut,
Pour moi ce n'est pas étonnant étant donné qu'un nombre réél peut
s'exprimer avec une infinité de chiffre après la virgule et que dans le
codage d'un réel il y a un nombre fini de bits (64 bits sur double). Je
sais
ici 316.84 est plutôt un décimal. Mais sur le principe 316.84 ne sera pas
codé de façon exacte s'il est converti en réel. Ce sera 316.84 + ou - une
marge d'erreur. Dans ce cas l'erreur est apparement de l'odre
de -2,50111042987555E-14 donc en fait 316.84 est codé en
316.8399999999999749... On s'en rend compte en faisant un msgbox
316.84*100-31684
Donc ce n'est pas le int qui cloche. Il fait bien son boulot. C'est plutôt
un problème de représentation de l'information. Il nous faudrait un type
décimal!
A+
Rv
"garnote" <rien@absent.net> a écrit dans le message de
news:D3VCc.14455$HS3.12983@edtnps84...
Bonjour,
Mais quand donc faut-il se méfier de Int ?
Sub Valeur_Entière()
Dim nombre As Double
nombre = 316.84 * 100
MsgBox Int(nombre) & vbNewLine & nombre 1
End Sub
Si le premier chiffre de 316.84 est différent de 3, Int donne le bon résultat. Tout de même curieux, non ?
Serge « Docteur, ma femme est clouée au lit, je souhaiterais que vous la vissiez. »
"Rv" a écrit dans le message de news:
Salut,
Pour moi ce n'est pas étonnant étant donné qu'un nombre réél peut s'exprimer avec une infinité de chiffre après la virgule et que dans le codage d'un réel il y a un nombre fini de bits (64 bits sur double). Je sais
ici 316.84 est plutôt un décimal. Mais sur le principe 316.84 ne sera pas codé de façon exacte s'il est converti en réel. Ce sera 316.84 + ou - une marge d'erreur. Dans ce cas l'erreur est apparement de l'odre de -2,50111042987555E-14 donc en fait 316.84 est codé en 316.8399999999999749... On s'en rend compte en faisant un msgbox 316.84*100-31684 Donc ce n'est pas le int qui cloche. Il fait bien son boulot. C'est plutôt un problème de représentation de l'information. Il nous faudrait un type décimal!
A+
Rv
"garnote" a écrit dans le message de news:D3VCc.14455$
Bonjour,
Mais quand donc faut-il se méfier de Int ?
Sub Valeur_Entière() Dim nombre As Double nombre = 316.84 * 100 MsgBox Int(nombre) & vbNewLine & nombre 1 End Sub
Serge
Rv
Re Serge,
Ben je ne trouve pas car selon le nombre on voit que la marge d'erreur est en excés ou en défaut si elle est en défaut int donne normalement l'entier inférieur donc il y perte d'une unité si elle l'erreur est en excés int donne toujours l'entier inférieur mais il n'y plus perte d'unité. Ca ne dépend pas du 3. Je copie colle des exemples du même cru de la fenêtre d'éxecution:
?int(1.1*10) 11 ?1.1*10-11 8,88178419700125E-16 C'était une erreur en excés donc pas de perte
?int(1.2*10) 11 ?1.2*10-12 -4,44089209850063E-16 Et c'est bien une erreur en défaut donc perte!
A+
Rv
"garnote" a écrit dans le message de news:IGWCc.14550$
Si le premier chiffre de 316.84 est différent de 3, Int donne le bon résultat. Tout de même curieux, non ?
Serge « Docteur, ma femme est clouée au lit, je souhaiterais que vous la vissiez. »
"Rv" a écrit dans le message de news:
Salut,
Pour moi ce n'est pas étonnant étant donné qu'un nombre réél peut s'exprimer avec une infinité de chiffre après la virgule et que dans le codage d'un réel il y a un nombre fini de bits (64 bits sur double). Je sais
ici 316.84 est plutôt un décimal. Mais sur le principe 316.84 ne sera pas
codé de façon exacte s'il est converti en réel. Ce sera 316.84 + ou - une
marge d'erreur. Dans ce cas l'erreur est apparement de l'odre de -2,50111042987555E-14 donc en fait 316.84 est codé en 316.8399999999999749... On s'en rend compte en faisant un msgbox 316.84*100-31684 Donc ce n'est pas le int qui cloche. Il fait bien son boulot. C'est plutôt
un problème de représentation de l'information. Il nous faudrait un type décimal!
A+
Rv
"garnote" a écrit dans le message de news:D3VCc.14455$
Bonjour,
Mais quand donc faut-il se méfier de Int ?
Sub Valeur_Entière() Dim nombre As Double nombre = 316.84 * 100 MsgBox Int(nombre) & vbNewLine & nombre 1 End Sub
Serge
Re Serge,
Ben je ne trouve pas car selon le nombre on voit que la marge d'erreur
est en excés ou en défaut si elle est en défaut int donne normalement
l'entier inférieur donc il y perte d'une unité si elle l'erreur est en
excés int donne toujours l'entier inférieur mais il n'y plus perte d'unité.
Ca ne dépend pas du 3. Je copie colle des exemples du même cru de la fenêtre
d'éxecution:
?int(1.1*10)
11
?1.1*10-11
8,88178419700125E-16
C'était une erreur en excés donc pas de perte
?int(1.2*10)
11
?1.2*10-12
-4,44089209850063E-16
Et c'est bien une erreur en défaut donc perte!
A+
Rv
"garnote" <rien@absent.net> a écrit dans le message de
news:IGWCc.14550$HS3.13094@edtnps84...
Si le premier chiffre de 316.84 est différent de 3,
Int donne le bon résultat.
Tout de même curieux, non ?
Serge
« Docteur, ma femme est clouée au lit, je souhaiterais
que vous la vissiez. »
"Rv" <herve.pinardPASDESPAM@free.fr> a écrit dans le message de news:
uqRHOgrWEHA.2928@tk2msftngp13.phx.gbl...
Salut,
Pour moi ce n'est pas étonnant étant donné qu'un nombre réél peut
s'exprimer avec une infinité de chiffre après la virgule et que dans le
codage d'un réel il y a un nombre fini de bits (64 bits sur double). Je
sais
ici 316.84 est plutôt un décimal. Mais sur le principe 316.84 ne sera
pas
codé de façon exacte s'il est converti en réel. Ce sera 316.84 + ou -
une
marge d'erreur. Dans ce cas l'erreur est apparement de l'odre
de -2,50111042987555E-14 donc en fait 316.84 est codé en
316.8399999999999749... On s'en rend compte en faisant un msgbox
316.84*100-31684
Donc ce n'est pas le int qui cloche. Il fait bien son boulot. C'est
plutôt
un problème de représentation de l'information. Il nous faudrait un type
décimal!
A+
Rv
"garnote" <rien@absent.net> a écrit dans le message de
news:D3VCc.14455$HS3.12983@edtnps84...
Bonjour,
Mais quand donc faut-il se méfier de Int ?
Sub Valeur_Entière()
Dim nombre As Double
nombre = 316.84 * 100
MsgBox Int(nombre) & vbNewLine & nombre 1
End Sub
Ben je ne trouve pas car selon le nombre on voit que la marge d'erreur est en excés ou en défaut si elle est en défaut int donne normalement l'entier inférieur donc il y perte d'une unité si elle l'erreur est en excés int donne toujours l'entier inférieur mais il n'y plus perte d'unité. Ca ne dépend pas du 3. Je copie colle des exemples du même cru de la fenêtre d'éxecution:
?int(1.1*10) 11 ?1.1*10-11 8,88178419700125E-16 C'était une erreur en excés donc pas de perte
?int(1.2*10) 11 ?1.2*10-12 -4,44089209850063E-16 Et c'est bien une erreur en défaut donc perte!
A+
Rv
"garnote" a écrit dans le message de news:IGWCc.14550$
Si le premier chiffre de 316.84 est différent de 3, Int donne le bon résultat. Tout de même curieux, non ?
Serge « Docteur, ma femme est clouée au lit, je souhaiterais que vous la vissiez. »
"Rv" a écrit dans le message de news:
Salut,
Pour moi ce n'est pas étonnant étant donné qu'un nombre réél peut s'exprimer avec une infinité de chiffre après la virgule et que dans le codage d'un réel il y a un nombre fini de bits (64 bits sur double). Je sais
ici 316.84 est plutôt un décimal. Mais sur le principe 316.84 ne sera pas
codé de façon exacte s'il est converti en réel. Ce sera 316.84 + ou - une
marge d'erreur. Dans ce cas l'erreur est apparement de l'odre de -2,50111042987555E-14 donc en fait 316.84 est codé en 316.8399999999999749... On s'en rend compte en faisant un msgbox 316.84*100-31684 Donc ce n'est pas le int qui cloche. Il fait bien son boulot. C'est plutôt
un problème de représentation de l'information. Il nous faudrait un type décimal!
A+
Rv
"garnote" a écrit dans le message de news:D3VCc.14455$
Bonjour,
Mais quand donc faut-il se méfier de Int ?
Sub Valeur_Entière() Dim nombre As Double nombre = 316.84 * 100 MsgBox Int(nombre) & vbNewLine & nombre 1 End Sub
Serge
sabatier
du grand serge....:-)))) jps
garnote a écrit:
« Docteur, ma femme est clouée au lit, je souhaiterais que vous la vissiez. »
du grand serge....:-))))
jps
garnote a écrit:
« Docteur, ma femme est clouée au lit, je souhaiterais
que vous la vissiez. »