Moi j'ai "1990 != 1989" ! Etonnant, non ?
Ca "marche" aussi avec 19.24 qui donne 1924 != 1923
Ca me fait pareil avec Fix au lieu de Int, avec 100.00 au lieu de 100.
Le seul moyen que j'ai trouvé, c'est de faire :
Response.Write (nPrix*100)
Response.Write(" = ")
Response.Write(Int((nPrix+0.001)*100)), histoire que le Int aie quelque
chose à "INTer"... Mais c'est quand même dingue (et très inquiétant !)
Problème constaté sur Windows XP et sur Windows server 2003...
Et vous ?
FU2 microsoft.public.fr.scripting
--
------------------------------
Francis
(remplacer .nospam par .net dans mon adresse pour me répondre
directement)
"Quand tout baigne, il y a forcément quelque chose qui va couler"
Bonjour Francis, J'ai testé ton script et effectivement j'ai le même résultat que toi sous w2000 pro Par contre si on remplace le Int(nPrix*100) par CInt(nPrix*100) on a les bonnes valeurs
Cordialement Georges
"Francis Spiesser" a écrit dans le message de news:
Salut à tous,
Je viens de tomber sur un cas des plus étranges... Que donne chez vous le code :
Moi j'ai "1990 != 1989" ! Etonnant, non ? Ca "marche" aussi avec 19.24 qui donne 1924 != 1923
Ca me fait pareil avec Fix au lieu de Int, avec 100.00 au lieu de 100. Le seul moyen que j'ai trouvé, c'est de faire :
Response.Write (nPrix*100) Response.Write(" = ") Response.Write(Int((nPrix+0.001)*100)), histoire que le Int aie quelque chose à "INTer"... Mais c'est quand même dingue (et très inquiétant !)
Problème constaté sur Windows XP et sur Windows server 2003...
Et vous ?
FU2 microsoft.public.fr.scripting
--
------------------------------ Francis (remplacer .nospam par .net dans mon adresse pour me répondre directement)
"Quand tout baigne, il y a forcément quelque chose qui va couler"
Bonjour Francis,
J'ai testé ton script et effectivement j'ai le même résultat que toi sous
w2000 pro
Par contre si on remplace le Int(nPrix*100) par CInt(nPrix*100) on a les
bonnes valeurs
Cordialement
Georges
"Francis Spiesser" <fspiesser@despixelsetdeshommes.nospam> a écrit dans le
message de news:mn.23ec7d4bae2e9a4c.2378@despixelsetdeshommes.nospam...
Salut à tous,
Je viens de tomber sur un cas des plus étranges...
Que donne chez vous le code :
Moi j'ai "1990 != 1989" ! Etonnant, non ?
Ca "marche" aussi avec 19.24 qui donne 1924 != 1923
Ca me fait pareil avec Fix au lieu de Int, avec 100.00 au lieu de 100.
Le seul moyen que j'ai trouvé, c'est de faire :
Response.Write (nPrix*100)
Response.Write(" = ")
Response.Write(Int((nPrix+0.001)*100)), histoire que le Int aie quelque
chose à "INTer"... Mais c'est quand même dingue (et très inquiétant !)
Problème constaté sur Windows XP et sur Windows server 2003...
Et vous ?
FU2 microsoft.public.fr.scripting
--
------------------------------
Francis
(remplacer .nospam par .net dans mon adresse pour me répondre
directement)
"Quand tout baigne, il y a forcément quelque chose qui va couler"
Bonjour Francis, J'ai testé ton script et effectivement j'ai le même résultat que toi sous w2000 pro Par contre si on remplace le Int(nPrix*100) par CInt(nPrix*100) on a les bonnes valeurs
Cordialement Georges
"Francis Spiesser" a écrit dans le message de news:
Salut à tous,
Je viens de tomber sur un cas des plus étranges... Que donne chez vous le code :
Moi j'ai "1990 != 1989" ! Etonnant, non ? Ca "marche" aussi avec 19.24 qui donne 1924 != 1923
Ca me fait pareil avec Fix au lieu de Int, avec 100.00 au lieu de 100. Le seul moyen que j'ai trouvé, c'est de faire :
Response.Write (nPrix*100) Response.Write(" = ") Response.Write(Int((nPrix+0.001)*100)), histoire que le Int aie quelque chose à "INTer"... Mais c'est quand même dingue (et très inquiétant !)
Problème constaté sur Windows XP et sur Windows server 2003...
Et vous ?
FU2 microsoft.public.fr.scripting
--
------------------------------ Francis (remplacer .nospam par .net dans mon adresse pour me répondre directement)
"Quand tout baigne, il y a forcément quelque chose qui va couler"
Georges MAUREL
Re bonjour Francis, une autre solution est de faire : int(round(nPrix*100,2)) et cela donnera le bon résultat
Cordialement Georges
"Francis Spiesser" a écrit dans le message de news:
Salut à tous,
Je viens de tomber sur un cas des plus étranges... Que donne chez vous le code :
Moi j'ai "1990 != 1989" ! Etonnant, non ? Ca "marche" aussi avec 19.24 qui donne 1924 != 1923
Ca me fait pareil avec Fix au lieu de Int, avec 100.00 au lieu de 100. Le seul moyen que j'ai trouvé, c'est de faire :
Response.Write (nPrix*100) Response.Write(" = ") Response.Write(Int((nPrix+0.001)*100)), histoire que le Int aie quelque chose à "INTer"... Mais c'est quand même dingue (et très inquiétant !)
Problème constaté sur Windows XP et sur Windows server 2003...
Et vous ?
FU2 microsoft.public.fr.scripting
--
------------------------------ Francis (remplacer .nospam par .net dans mon adresse pour me répondre directement)
"Quand tout baigne, il y a forcément quelque chose qui va couler"
Re bonjour Francis,
une autre solution est de faire : int(round(nPrix*100,2))
et cela donnera le bon résultat
Cordialement
Georges
"Francis Spiesser" <fspiesser@despixelsetdeshommes.nospam> a écrit dans le
message de news:mn.23ec7d4bae2e9a4c.2378@despixelsetdeshommes.nospam...
Salut à tous,
Je viens de tomber sur un cas des plus étranges...
Que donne chez vous le code :
Moi j'ai "1990 != 1989" ! Etonnant, non ?
Ca "marche" aussi avec 19.24 qui donne 1924 != 1923
Ca me fait pareil avec Fix au lieu de Int, avec 100.00 au lieu de 100.
Le seul moyen que j'ai trouvé, c'est de faire :
Response.Write (nPrix*100)
Response.Write(" = ")
Response.Write(Int((nPrix+0.001)*100)), histoire que le Int aie quelque
chose à "INTer"... Mais c'est quand même dingue (et très inquiétant !)
Problème constaté sur Windows XP et sur Windows server 2003...
Et vous ?
FU2 microsoft.public.fr.scripting
--
------------------------------
Francis
(remplacer .nospam par .net dans mon adresse pour me répondre
directement)
"Quand tout baigne, il y a forcément quelque chose qui va couler"
Moi j'ai "1990 != 1989" ! Etonnant, non ? Ca "marche" aussi avec 19.24 qui donne 1924 != 1923
Ca me fait pareil avec Fix au lieu de Int, avec 100.00 au lieu de 100. Le seul moyen que j'ai trouvé, c'est de faire :
Response.Write (nPrix*100) Response.Write(" = ") Response.Write(Int((nPrix+0.001)*100)), histoire que le Int aie quelque chose à "INTer"... Mais c'est quand même dingue (et très inquiétant !)
Problème constaté sur Windows XP et sur Windows server 2003...
Et vous ?
FU2 microsoft.public.fr.scripting
--
------------------------------ Francis (remplacer .nospam par .net dans mon adresse pour me répondre directement)
"Quand tout baigne, il y a forcément quelque chose qui va couler"
Francis Spiesser
Georges MAUREL a exposé le 04/11/2004 :
Re bonjour Francis, une autre solution est de faire : int(round(nPrix*100,2)) et cela donnera le bon résultat
Merci de l'astuce, elle est un moins "sale" que la mienne.
Quant au CInt, c'est bizarre que ça fonctionne puisque lui est censé arrondir (enfin quand il ya quelque chose à arrondir, bien sûr...)
bye
--
------------------------------ Francis (remplacer .nospam par .net dans mon adresse pour me répondre directement)
"Quand tout baigne, il y a forcément quelque chose qui va couler"
Georges MAUREL a exposé le 04/11/2004 :
Re bonjour Francis,
une autre solution est de faire : int(round(nPrix*100,2))
et cela donnera le bon résultat
Merci de l'astuce, elle est un moins "sale" que la mienne.
Quant au CInt, c'est bizarre que ça fonctionne puisque lui est censé
arrondir (enfin quand il ya quelque chose à arrondir, bien sûr...)
bye
--
------------------------------
Francis
(remplacer .nospam par .net dans mon adresse pour me répondre
directement)
"Quand tout baigne, il y a forcément quelque chose qui va couler"
"Les deux fonctions Int et Fix suppriment la partie fractionnaire de l'argument number et renvoie la valeur entière résultante."
"La différence entre les fonctions Int et Fix tient au fait que si l'argument number est négatif, la fonction Int renvoie le premier entier négatif inférieur ou égal à number, tandis que la fonction Fix renvoie le premier entier négatif supérieur ou égal à number."
Fonction CInt http://msdn.microsoft.com/library/en-us/script56/html/vsfctCInt.asp
"Remarque La fonction CInt est différente des fonctions Fix et Int qui tronquent au lieu d'arrondir la mantisse d'un nombre. Quand la mantisse est exactement 0,5, la fonction CInt l'arrondit toujours au nombre pair le plus proche. Par exemple, 0,5 est arrondi à 0 et 1,5 est arrondi à 2."
Amicalement,
Jean - JMST Belgium
"Francis Spiesser" a écrit dans le message de news:
Georges MAUREL a exposé le 04/11/2004 :
Re bonjour Francis, une autre solution est de faire : int(round(nPrix*100,2)) et cela donnera le bon résultat
Merci de l'astuce, elle est un moins "sale" que la mienne.
Quant au CInt, c'est bizarre que ça fonctionne puisque lui est censé arrondir (enfin quand il ya quelque chose à arrondir, bien sûr...)
bye
--
------------------------------ Francis (remplacer .nospam par .net dans mon adresse pour me répondre directement)
"Quand tout baigne, il y a forcément quelque chose qui va couler"
Bonjour,
La réponse est dans la documentation : http://download.microsoft.com/download/winscript56/install/5.6/w98nt42kme/fr/scd56fr.exe
"Les deux fonctions Int et Fix suppriment la partie fractionnaire de l'argument number et renvoie la valeur entière résultante."
"La différence entre les fonctions Int et Fix tient au fait que si l'argument number est négatif, la fonction Int renvoie le premier
entier négatif inférieur ou égal à number, tandis que la fonction Fix renvoie le premier entier négatif supérieur ou égal à number."
Fonction CInt
http://msdn.microsoft.com/library/en-us/script56/html/vsfctCInt.asp
"Remarque La fonction CInt est différente des fonctions Fix et Int qui tronquent au lieu d'arrondir la mantisse d'un nombre.
Quand la mantisse est exactement 0,5, la fonction CInt l'arrondit toujours au nombre pair le plus proche. Par exemple, 0,5 est
arrondi à 0 et 1,5 est arrondi à 2."
Amicalement,
Jean - JMST
Belgium
"Francis Spiesser" <fspiesser@despixelsetdeshommes.nospam> a écrit dans le message de news:
mn.2c257d4bfe0f1a3e.2378@despixelsetdeshommes.nospam...
Georges MAUREL a exposé le 04/11/2004 :
Re bonjour Francis,
une autre solution est de faire : int(round(nPrix*100,2))
et cela donnera le bon résultat
Merci de l'astuce, elle est un moins "sale" que la mienne.
Quant au CInt, c'est bizarre que ça fonctionne puisque lui est censé arrondir (enfin quand il ya quelque chose à arrondir, bien
sûr...)
bye
--
------------------------------
Francis
(remplacer .nospam par .net dans mon adresse pour me répondre directement)
"Quand tout baigne, il y a forcément quelque chose qui va couler"
"Les deux fonctions Int et Fix suppriment la partie fractionnaire de l'argument number et renvoie la valeur entière résultante."
"La différence entre les fonctions Int et Fix tient au fait que si l'argument number est négatif, la fonction Int renvoie le premier entier négatif inférieur ou égal à number, tandis que la fonction Fix renvoie le premier entier négatif supérieur ou égal à number."
Fonction CInt http://msdn.microsoft.com/library/en-us/script56/html/vsfctCInt.asp
"Remarque La fonction CInt est différente des fonctions Fix et Int qui tronquent au lieu d'arrondir la mantisse d'un nombre. Quand la mantisse est exactement 0,5, la fonction CInt l'arrondit toujours au nombre pair le plus proche. Par exemple, 0,5 est arrondi à 0 et 1,5 est arrondi à 2."
Amicalement,
Jean - JMST Belgium
"Francis Spiesser" a écrit dans le message de news:
Georges MAUREL a exposé le 04/11/2004 :
Re bonjour Francis, une autre solution est de faire : int(round(nPrix*100,2)) et cela donnera le bon résultat
Merci de l'astuce, elle est un moins "sale" que la mienne.
Quant au CInt, c'est bizarre que ça fonctionne puisque lui est censé arrondir (enfin quand il ya quelque chose à arrondir, bien sûr...)
bye
--
------------------------------ Francis (remplacer .nospam par .net dans mon adresse pour me répondre directement)
"Quand tout baigne, il y a forcément quelque chose qui va couler"
Francis Spiesser
Jean a exposé le 05/11/2004 :
Bonjour,
La réponse est dans la documentation :
Oui, c'est tout à fait ce que je voulais dire par "CInt est censé arrondir", mais merci pour l'extrême précision de la réponse.
En ce qui concerne le bug initial, voici la réponse qui m'a été donnée sur un autre forum et qui explique dans quelles conditions, il peut survenir. Merci à El Papyo pour sa recherche. --------------- C'est un probleme connu sur toutes les implémentations de windows, du aux limites de la représentation interne des floats (dans ce cas dans le variant) à la norme IEEE, intrinseque aux langages microsoft/à windows : http://support.microsoft.com/default.aspx?scid=kb;en-us;36068 http://support.microsoft.com/default.aspx?scid=kb;en-us;145889
19.90 *100 => ne donne pas 1990 mais une représentation float IEEE qui pourrait être au pif 1989.955353545135... Si tu lances INT sur une représentation interne de ce type... ---------------
--
------------------------------ Francis (remplacer .nospam par .net dans mon adresse pour me répondre directement)
"Quand tout baigne, il y a forcément quelque chose qui va couler"
Jean a exposé le 05/11/2004 :
Bonjour,
La réponse est dans la documentation :
Oui, c'est tout à fait ce que je voulais dire par "CInt est censé
arrondir", mais merci pour l'extrême précision de la réponse.
En ce qui concerne le bug initial, voici la réponse qui m'a été donnée
sur un autre forum et qui explique dans quelles conditions, il peut
survenir. Merci à El Papyo pour sa recherche.
---------------
C'est un probleme connu sur toutes les implémentations de windows, du
aux limites de la représentation interne des floats (dans ce cas dans
le variant) à la norme IEEE, intrinseque aux langages microsoft/à
windows :
http://support.microsoft.com/default.aspx?scid=kb;en-us;36068
http://support.microsoft.com/default.aspx?scid=kb;en-us;145889
19.90 *100 => ne donne pas 1990 mais une représentation float IEEE qui
pourrait être au pif 1989.955353545135...
Si tu lances INT sur une représentation interne de ce type...
---------------
--
------------------------------
Francis
(remplacer .nospam par .net dans mon adresse pour me répondre
directement)
"Quand tout baigne, il y a forcément quelque chose qui va couler"
Oui, c'est tout à fait ce que je voulais dire par "CInt est censé arrondir", mais merci pour l'extrême précision de la réponse.
En ce qui concerne le bug initial, voici la réponse qui m'a été donnée sur un autre forum et qui explique dans quelles conditions, il peut survenir. Merci à El Papyo pour sa recherche. --------------- C'est un probleme connu sur toutes les implémentations de windows, du aux limites de la représentation interne des floats (dans ce cas dans le variant) à la norme IEEE, intrinseque aux langages microsoft/à windows : http://support.microsoft.com/default.aspx?scid=kb;en-us;36068 http://support.microsoft.com/default.aspx?scid=kb;en-us;145889
19.90 *100 => ne donne pas 1990 mais une représentation float IEEE qui pourrait être au pif 1989.955353545135... Si tu lances INT sur une représentation interne de ce type... ---------------
--
------------------------------ Francis (remplacer .nospam par .net dans mon adresse pour me répondre directement)
"Quand tout baigne, il y a forcément quelque chose qui va couler"
Sylvain F
et avec un Cint ?
"Francis Spiesser" a écrit dans le message de news:
Salut à tous,
Je viens de tomber sur un cas des plus étranges... Que donne chez vous le code :
Moi j'ai "1990 != 1989" ! Etonnant, non ? Ca "marche" aussi avec 19.24 qui donne 1924 != 1923
Ca me fait pareil avec Fix au lieu de Int, avec 100.00 au lieu de 100. Le seul moyen que j'ai trouvé, c'est de faire :
Response.Write (nPrix*100) Response.Write(" = ") Response.Write(Int((nPrix+0.001)*100)), histoire que le Int aie quelque chose à "INTer"... Mais c'est quand même dingue (et très inquiétant !)
Problème constaté sur Windows XP et sur Windows server 2003...
Et vous ?
FU2 microsoft.public.fr.scripting
--
------------------------------ Francis (remplacer .nospam par .net dans mon adresse pour me répondre directement)
"Quand tout baigne, il y a forcément quelque chose qui va couler"
et avec un Cint ?
"Francis Spiesser" <fspiesser@despixelsetdeshommes.nospam> a écrit dans le
message de news:mn.23ec7d4bae2e9a4c.2378@despixelsetdeshommes.nospam...
Salut à tous,
Je viens de tomber sur un cas des plus étranges...
Que donne chez vous le code :
Moi j'ai "1990 != 1989" ! Etonnant, non ?
Ca "marche" aussi avec 19.24 qui donne 1924 != 1923
Ca me fait pareil avec Fix au lieu de Int, avec 100.00 au lieu de 100.
Le seul moyen que j'ai trouvé, c'est de faire :
Response.Write (nPrix*100)
Response.Write(" = ")
Response.Write(Int((nPrix+0.001)*100)), histoire que le Int aie quelque
chose à "INTer"... Mais c'est quand même dingue (et très inquiétant !)
Problème constaté sur Windows XP et sur Windows server 2003...
Et vous ?
FU2 microsoft.public.fr.scripting
--
------------------------------
Francis
(remplacer .nospam par .net dans mon adresse pour me répondre
directement)
"Quand tout baigne, il y a forcément quelque chose qui va couler"
Moi j'ai "1990 != 1989" ! Etonnant, non ? Ca "marche" aussi avec 19.24 qui donne 1924 != 1923
Ca me fait pareil avec Fix au lieu de Int, avec 100.00 au lieu de 100. Le seul moyen que j'ai trouvé, c'est de faire :
Response.Write (nPrix*100) Response.Write(" = ") Response.Write(Int((nPrix+0.001)*100)), histoire que le Int aie quelque chose à "INTer"... Mais c'est quand même dingue (et très inquiétant !)
Problème constaté sur Windows XP et sur Windows server 2003...
Et vous ?
FU2 microsoft.public.fr.scripting
--
------------------------------ Francis (remplacer .nospam par .net dans mon adresse pour me répondre directement)
"Quand tout baigne, il y a forcément quelque chose qui va couler"
Axel Guerrier [MS]
Bonjour Francis,
Pour moi (et d'autres), ce n'est pas un bug, mais juste la manière de calculer pour un ordinateur... (qui n'a que des 0 et des 1 à sa disposition :-))
196652 How To Implement Custom Rounding Procedures http://support.microsoft.com/?id6652
-- Axel Guerrier Microsoft France -------------------- Merci de bien vouloir répondre à ce message dans le newsgroup où il a été posté. Je le consulte régulièrement.
"Francis Spiesser" wrote in message news:
Salut à tous,
Je viens de tomber sur un cas des plus étranges... Que donne chez vous le code :
Moi j'ai "1990 != 1989" ! Etonnant, non ? Ca "marche" aussi avec 19.24 qui donne 1924 != 1923
Ca me fait pareil avec Fix au lieu de Int, avec 100.00 au lieu de 100. Le seul moyen que j'ai trouvé, c'est de faire :
Response.Write (nPrix*100) Response.Write(" = ") Response.Write(Int((nPrix+0.001)*100)), histoire que le Int aie quelque chose à "INTer"... Mais c'est quand même dingue (et très inquiétant !)
Problème constaté sur Windows XP et sur Windows server 2003...
Et vous ?
FU2 microsoft.public.fr.scripting
--
------------------------------ Francis (remplacer .nospam par .net dans mon adresse pour me répondre directement)
"Quand tout baigne, il y a forcément quelque chose qui va couler"
Bonjour Francis,
Pour moi (et d'autres), ce n'est pas un bug, mais juste la manière de
calculer pour un ordinateur... (qui n'a que des 0 et des 1 à sa disposition
:-))
196652 How To Implement Custom Rounding Procedures
http://support.microsoft.com/?id6652
--
Axel Guerrier
Microsoft France
--------------------
Merci de bien vouloir répondre à ce message dans le newsgroup où il a été
posté. Je le consulte régulièrement.
"Francis Spiesser" <fspiesser@despixelsetdeshommes.nospam> wrote in message
news:mn.23ec7d4bae2e9a4c.2378@despixelsetdeshommes.nospam...
Salut à tous,
Je viens de tomber sur un cas des plus étranges...
Que donne chez vous le code :
Moi j'ai "1990 != 1989" ! Etonnant, non ?
Ca "marche" aussi avec 19.24 qui donne 1924 != 1923
Ca me fait pareil avec Fix au lieu de Int, avec 100.00 au lieu de 100. Le
seul moyen que j'ai trouvé, c'est de faire :
Response.Write (nPrix*100)
Response.Write(" = ")
Response.Write(Int((nPrix+0.001)*100)), histoire que le Int aie quelque
chose à "INTer"... Mais c'est quand même dingue (et très inquiétant !)
Problème constaté sur Windows XP et sur Windows server 2003...
Et vous ?
FU2 microsoft.public.fr.scripting
--
------------------------------
Francis
(remplacer .nospam par .net dans mon adresse pour me répondre directement)
"Quand tout baigne, il y a forcément quelque chose qui va couler"
Pour moi (et d'autres), ce n'est pas un bug, mais juste la manière de calculer pour un ordinateur... (qui n'a que des 0 et des 1 à sa disposition :-))
196652 How To Implement Custom Rounding Procedures http://support.microsoft.com/?id6652
-- Axel Guerrier Microsoft France -------------------- Merci de bien vouloir répondre à ce message dans le newsgroup où il a été posté. Je le consulte régulièrement.
"Francis Spiesser" wrote in message news:
Salut à tous,
Je viens de tomber sur un cas des plus étranges... Que donne chez vous le code :
Moi j'ai "1990 != 1989" ! Etonnant, non ? Ca "marche" aussi avec 19.24 qui donne 1924 != 1923
Ca me fait pareil avec Fix au lieu de Int, avec 100.00 au lieu de 100. Le seul moyen que j'ai trouvé, c'est de faire :
Response.Write (nPrix*100) Response.Write(" = ") Response.Write(Int((nPrix+0.001)*100)), histoire que le Int aie quelque chose à "INTer"... Mais c'est quand même dingue (et très inquiétant !)
Problème constaté sur Windows XP et sur Windows server 2003...
Et vous ?
FU2 microsoft.public.fr.scripting
--
------------------------------ Francis (remplacer .nospam par .net dans mon adresse pour me répondre directement)
"Quand tout baigne, il y a forcément quelque chose qui va couler"
JPMagnal
Effectivement ne pas indiquer dès le départ que les calculs se feront sur des valeurs entières, mais utiliser Cint qui convertit le résultat du calcul réel en valeur entière.
Bonjour Francis, J'ai testé ton script et effectivement j'ai le même résultat que toi sous w2000 pro Par contre si on remplace le Int(nPrix*100) par CInt(nPrix*100) on a les bonnes valeurs
Cordialement Georges
"Francis Spiesser" a écrit dans le message de news:
Salut à tous,
Je viens de tomber sur un cas des plus étranges... Que donne chez vous le code :
Moi j'ai "1990 != 1989" ! Etonnant, non ? Ca "marche" aussi avec 19.24 qui donne 1924 != 1923
Ca me fait pareil avec Fix au lieu de Int, avec 100.00 au lieu de 100. Le seul moyen que j'ai trouvé, c'est de faire :
Response.Write (nPrix*100) Response.Write(" = ") Response.Write(Int((nPrix+0.001)*100)), histoire que le Int aie quelque chose à "INTer"... Mais c'est quand même dingue (et très inquiétant !)
Problème constaté sur Windows XP et sur Windows server 2003...
Et vous ?
FU2 microsoft.public.fr.scripting
--
------------------------------ Francis (remplacer .nospam par .net dans mon adresse pour me répondre directement)
"Quand tout baigne, il y a forcément quelque chose qui va couler"
Effectivement ne pas indiquer dès le départ que les calculs se feront
sur des valeurs entières, mais utiliser Cint qui convertit le résultat
du calcul réel en valeur entière.
Bonjour Francis,
J'ai testé ton script et effectivement j'ai le même résultat que toi sous
w2000 pro
Par contre si on remplace le Int(nPrix*100) par CInt(nPrix*100) on a les
bonnes valeurs
Cordialement
Georges
"Francis Spiesser" <fspiesser@despixelsetdeshommes.nospam> a écrit dans le
message de news:mn.23ec7d4bae2e9a4c.2378@despixelsetdeshommes.nospam...
Salut à tous,
Je viens de tomber sur un cas des plus étranges...
Que donne chez vous le code :
Moi j'ai "1990 != 1989" ! Etonnant, non ?
Ca "marche" aussi avec 19.24 qui donne 1924 != 1923
Ca me fait pareil avec Fix au lieu de Int, avec 100.00 au lieu de 100.
Le seul moyen que j'ai trouvé, c'est de faire :
Response.Write (nPrix*100)
Response.Write(" = ")
Response.Write(Int((nPrix+0.001)*100)), histoire que le Int aie quelque
chose à "INTer"... Mais c'est quand même dingue (et très inquiétant !)
Problème constaté sur Windows XP et sur Windows server 2003...
Et vous ?
FU2 microsoft.public.fr.scripting
--
------------------------------
Francis
(remplacer .nospam par .net dans mon adresse pour me répondre
directement)
"Quand tout baigne, il y a forcément quelque chose qui va couler"
Effectivement ne pas indiquer dès le départ que les calculs se feront sur des valeurs entières, mais utiliser Cint qui convertit le résultat du calcul réel en valeur entière.
Bonjour Francis, J'ai testé ton script et effectivement j'ai le même résultat que toi sous w2000 pro Par contre si on remplace le Int(nPrix*100) par CInt(nPrix*100) on a les bonnes valeurs
Cordialement Georges
"Francis Spiesser" a écrit dans le message de news:
Salut à tous,
Je viens de tomber sur un cas des plus étranges... Que donne chez vous le code :
Moi j'ai "1990 != 1989" ! Etonnant, non ? Ca "marche" aussi avec 19.24 qui donne 1924 != 1923
Ca me fait pareil avec Fix au lieu de Int, avec 100.00 au lieu de 100. Le seul moyen que j'ai trouvé, c'est de faire :
Response.Write (nPrix*100) Response.Write(" = ") Response.Write(Int((nPrix+0.001)*100)), histoire que le Int aie quelque chose à "INTer"... Mais c'est quand même dingue (et très inquiétant !)
Problème constaté sur Windows XP et sur Windows server 2003...
Et vous ?
FU2 microsoft.public.fr.scripting
--
------------------------------ Francis (remplacer .nospam par .net dans mon adresse pour me répondre directement)
"Quand tout baigne, il y a forcément quelque chose qui va couler"
Moi j'ai "1990 != 1989" ! Etonnant, non ? Ca "marche" aussi avec 19.24 qui donne 1924 != 1923
Ca me fait pareil avec Fix au lieu de Int, avec 100.00 au lieu de 100. Le seul moyen que j'ai trouvé, c'est de faire :
Response.Write (nPrix*100) Response.Write(" = ") Response.Write(Int((nPrix+0.001)*100)), histoire que le Int aie quelque chose à "INTer"... Mais c'est quand même dingue (et très inquiétant !)
Problème constaté sur Windows XP et sur Windows server 2003...
Et vous ?
FU2 microsoft.public.fr.scripting
--
------------------------------ Francis (remplacer .nospam par .net dans mon adresse pour me répondre directement)
"Quand tout baigne, il y a forcément quelque chose qui va couler"
Moi j'ai "1990 != 1989" ! Etonnant, non ?
Ca "marche" aussi avec 19.24 qui donne 1924 != 1923
Ca me fait pareil avec Fix au lieu de Int, avec 100.00 au lieu de 100.
Le seul moyen que j'ai trouvé, c'est de faire :
Response.Write (nPrix*100)
Response.Write(" = ")
Response.Write(Int((nPrix+0.001)*100)), histoire que le Int aie quelque
chose à "INTer"... Mais c'est quand même dingue (et très inquiétant !)
Problème constaté sur Windows XP et sur Windows server 2003...
Et vous ?
FU2 microsoft.public.fr.scripting
--
------------------------------
Francis
(remplacer .nospam par .net dans mon adresse pour me répondre
directement)
"Quand tout baigne, il y a forcément quelque chose qui va couler"
Moi j'ai "1990 != 1989" ! Etonnant, non ? Ca "marche" aussi avec 19.24 qui donne 1924 != 1923
Ca me fait pareil avec Fix au lieu de Int, avec 100.00 au lieu de 100. Le seul moyen que j'ai trouvé, c'est de faire :
Response.Write (nPrix*100) Response.Write(" = ") Response.Write(Int((nPrix+0.001)*100)), histoire que le Int aie quelque chose à "INTer"... Mais c'est quand même dingue (et très inquiétant !)
Problème constaté sur Windows XP et sur Windows server 2003...
Et vous ?
FU2 microsoft.public.fr.scripting
--
------------------------------ Francis (remplacer .nospam par .net dans mon adresse pour me répondre directement)
"Quand tout baigne, il y a forcément quelque chose qui va couler"
Francis Spiesser
Bonjour Francis,
Pour moi (et d'autres), ce n'est pas un bug, mais juste la manière de calculer pour un ordinateur... (qui n'a que des 0 et des 1 à sa disposition :-))
196652 How To Implement Custom Rounding Procedures http://support.microsoft.com/?id6652
Merci pour le lien mais, langue de bois mise à part, de telles erreurs sur des opérations aussi basiques si ça n'est pas un bug, c'est un grave problème dans l'architecture du produit/système/processeur (rayez les mentions inutiles). J'ai fait des tests avec Visual FoxPro et je n'arrive pas à reproduire ce problème... Curieux, non ?
--
------------------------------ Francis (remplacer .nospam par .net dans mon adresse pour me répondre directement)
"Quand tout baigne, il y a forcément quelque chose qui va couler"
Bonjour Francis,
Pour moi (et d'autres), ce n'est pas un bug, mais juste la manière de
calculer pour un ordinateur... (qui n'a que des 0 et des 1 à sa disposition
:-))
196652 How To Implement Custom Rounding Procedures
http://support.microsoft.com/?id6652
Merci pour le lien mais, langue de bois mise à part, de telles erreurs
sur des opérations aussi basiques si ça n'est pas un bug, c'est un
grave problème dans l'architecture du produit/système/processeur (rayez
les mentions inutiles).
J'ai fait des tests avec Visual FoxPro et je n'arrive pas à reproduire
ce problème... Curieux, non ?
--
------------------------------
Francis
(remplacer .nospam par .net dans mon adresse pour me répondre
directement)
"Quand tout baigne, il y a forcément quelque chose qui va couler"
Pour moi (et d'autres), ce n'est pas un bug, mais juste la manière de calculer pour un ordinateur... (qui n'a que des 0 et des 1 à sa disposition :-))
196652 How To Implement Custom Rounding Procedures http://support.microsoft.com/?id6652
Merci pour le lien mais, langue de bois mise à part, de telles erreurs sur des opérations aussi basiques si ça n'est pas un bug, c'est un grave problème dans l'architecture du produit/système/processeur (rayez les mentions inutiles). J'ai fait des tests avec Visual FoxPro et je n'arrive pas à reproduire ce problème... Curieux, non ?
--
------------------------------ Francis (remplacer .nospam par .net dans mon adresse pour me répondre directement)
"Quand tout baigne, il y a forcément quelque chose qui va couler"