Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
5163 connectés 

 


 Mot :   Pseudo :  
 
 Page :   1  2  3  4
Auteur Sujet :

[java] Pb de multiplication de double ?????

n°483599
Kristoph
Posté le 11-08-2003 à 15:22:20  profilanswer
 

Reprise du message précédent :
0.999999.... est ce qu'on appelle en math une écriture dégénérée du nombre 1.

mood
Publicité
Posté le 11-08-2003 à 15:22:20  profilanswer
 

n°483602
Taz
bisounours-codeur
Posté le 11-08-2003 à 15:23:00  profilanswer
 

ben un entier est le point de convergence du suite, ça te rappelle quelque chose. la preuve par 3 ?
 
1/3 + 1/3 + 1/3 est bien égal à 1
 
donc 0,9999... = 1

n°483610
stolenkiss
127.0.0.1, sweet 127.0.0.1
Posté le 11-08-2003 à 15:26:57  profilanswer
 

Mauvaise foi powaa :D
 
   Ca me fera toujours rire les arguments fallacieux que certains trouvent pour imposer leur vision des choses. Et ca va parfois un peu loin. Vous jouez sur les propriétés mathématiques pour vous donner raison.
 
   Le constat, vous l'avez pourtant fait au départ: l'erreur du résultat (parce qu'il y a erreur, sans ambiguité, même si on connait la raison de cette erreur qui est imputable au codage des décimaux) est dûe à l'imprécision du typage des données. Stou :)
 
Stolenkiss

n°483623
benou
Posté le 11-08-2003 à 15:31:31  profilanswer
 

fFluFf a écrit :


 pour un modo ca le fait pas.


+1 sur ce coup là :/
 
voilà une façon d'avoir des calculs exactes :  
 

Code :
  1. import java.math.*;
  2. public class Test2 {
  3. public static void main(String[] args) {
  4.  BigDecimal b1 = new BigDecimal("1.15" );
  5.  BigDecimal b2 = new BigDecimal("93" );
  6.  BigDecimal b3 = b1.multiply(b2);
  7.  System.out.println("" + b1 + "+" + b2 + "=" + b3);
  8. }
  9. }


Citation :

1.15+93=106.95


 
heureux ?


---------------
ma vie, mon oeuvre - HomePlayer
n°483624
Taz
bisounours-codeur
Posté le 11-08-2003 à 15:31:54  profilanswer
 

j'ai un DEUG de Maths/Info man :o  
c'est pas de la blague

n°483628
Taz
bisounours-codeur
Posté le 11-08-2003 à 15:32:47  profilanswer
 

:heink:  
 
Plonk

n°483629
benou
Posté le 11-08-2003 à 15:33:03  profilanswer
 

Taz a écrit :

pi à la base je  :o par ce qu'il a fallu 1 page pour qu'un mec dise enfin "hey, les doubles sont une réprésentation imprécise des réels"


bon t'arrêtes de raconter n'importe quoi ?
 
je l'ai dis dès le début !  :fou:


---------------
ma vie, mon oeuvre - HomePlayer
n°483631
LetoII
Le dormeur doit se réveiller
Posté le 11-08-2003 à 15:33:12  profilanswer
 

Taz a écrit :

j'ai un DEUG de Maths/Info man :o  
c'est pas de la blague


 
 
 [:fuel]


---------------
Le Tyran
n°483638
ffluff
Challenge Everything
Posté le 11-08-2003 à 15:36:55  profilanswer
 

Taz a écrit :

ben un entier est le point de convergence du suite, ça te rappelle quelque chose. la preuve par 3 ?
 
1/3 + 1/3 + 1/3 est bien égal à 1
 
donc 0,9999... = 1


rien qu'une chose a dire : LoL
c'est tellement enorme !
 

n°483644
ffluff
Challenge Everything
Posté le 11-08-2003 à 15:38:31  profilanswer
 

Taz a écrit :

j'ai un DEUG de Maths/Info man :o  
c'est pas de la blague


c'est bizar j'ai exactement le meme mais apparement tu aurai du aller au cours de math ;) au lieu de te concentre sur l'info !

mood
Publicité
Posté le 11-08-2003 à 15:38:31  profilanswer
 

n°483656
Kristoph
Posté le 11-08-2003 à 15:45:07  profilanswer
 

Stolenkiss a écrit :

Mauvaise foi powaa :D
 
   Ca me fera toujours rire les arguments fallacieux que certains trouvent pour imposer leur vision des choses. Et ca va parfois un peu loin. Vous jouez sur les propriétés mathématiques pour vous donner raison.
 
   Le constat, vous l'avez pourtant fait au départ: l'erreur du résultat (parce qu'il y a erreur, sans ambiguité, même si on connait la raison de cette erreur qui est imputable au codage des décimaux) est dûe à l'imprécision du typage des données. Stou :)
 
Stolenkiss


 
Mon prof de MP* va pas content car je n'arrive plus à me souvenir de toute la théorie correspondante. Mais ça ne change pas le fait que 0.99999.... == 1

n°483688
ffluff
Challenge Everything
Posté le 11-08-2003 à 15:57:37  profilanswer
 

je sais que :
 
lim x = 1
x->1
x<1
 
mais de la à dire 0.999999...=1  :heink:  
 
mettre 106.94999999=106.95 ca me derange mais alors beaucoup !
Mais ca serait cool que tu retrouve la theorie car contrairement à certain que je ne citerais pas ( hein ben ;) ) j'admetrai que vous avez raison.

n°483705
Taz
bisounours-codeur
Posté le 11-08-2003 à 16:01:42  profilanswer
 

tu te souviens pas de ce que j'ai fait de mes cours de DEUG? sur ce coup là, je suis sur.

n°483709
LetoII
Le dormeur doit se réveiller
Posté le 11-08-2003 à 16:03:45  profilanswer
 

0.9999999... est effectivement une notation à la con qui a à voir avec les limites. c en tout cas tout ce dont je me souviens (honte sur moi). En même temps j'ai une excuse ç fait 3 ans que j'ai pas fait de vrai maths (ça me manque un peu d'ailleur :'()


---------------
Le Tyran
n°483711
benou
Posté le 11-08-2003 à 16:05:42  profilanswer
 

vous débordez un peu du sujet là ...


---------------
ma vie, mon oeuvre - HomePlayer
n°483712
LetoII
Le dormeur doit se réveiller
Posté le 11-08-2003 à 16:06:55  profilanswer
 

benou a écrit :

vous débordez un peu du sujet là ...


 
 :jap:


---------------
Le Tyran
n°483839
duchzeworl​d
Posté le 11-08-2003 à 17:40:16  profilanswer
 

Juste une remarque. En math deux nombres (réels) sont égaux si on ne peut en trouver aucun entre les deux. Par exemple  1 = 0.9999... (ou ... représente une infinité de 9).  
 
 

fFluFf a écrit :


 
si on ne peut plus faire confiance à un ordi pour une simple multiplication ...
Car vous n'arriverez pas à me faire croire que 106.95 = 106.9499999999
 
 

n°483976
deltaden
Posté le 11-08-2003 à 19:44:09  profilanswer
 

fFluFf a écrit :

mettre 106.94999999=106.95 ca me derange mais alors beaucoup !


évidement, vu que c'est faut, par contre
 
106.94999999....=106.95 est vrai, le point important (pour les inatentifs) est "...."
J'admets que c'est une notation à la con

n°484716
liengy
Approuved !!!
Posté le 12-08-2003 à 11:58:30  profilanswer
 

J'pensais pas générée une telle polémique...
 
Moi mon souci c juste d'avoir une précision à 2 chiffres...
En fait j'ai besoin d'afficher des tarifs pour des produits...
Mais le montant subi un correctif... En gros j'applique une hausse de 15% à mon tarif (93 euros), et je veux que ça m'affiche 106,95 !!! et rien d'autres....
 
si j'ai choisi de mettre des float plutot que le formatage, c pas que j'ai pas confiance, c que dans le cas de mon application qui comporte bcp d'autres choses, c la meilleure chose à faire...
 
Le coup du formatage, m'obligerais à modifier énormemment de chose...
 
Tandis que les float étant donné que je travail avec des nombres relativement petits me conviennent mieux....
 
 
Merci kan meme...

n°484740
BifaceMcLe​OD
The HighGlandeur
Posté le 12-08-2003 à 12:20:30  profilanswer
 

liengy> Si tu veux une précision à 2 chiffres, il faut que tu prévois l'ajout d'un calcul d'arrondi à la fin de tes calculs (fonction "Math.Round()" si ma mémoire est bonne). C'est la manière dont les calculs sur des flottants fonctionnent.
 
Evidemment, en mathématiques strictes, 106.95 n'est pas égal à 106.949999997 (tu noteras l'absence des points de suspension). Le problème, c'est que le type "double" (et a fortiori le type "float" ) ne permet pas de représenter la valeur 106.95 de manière exacte, seulement de manière approchée ; et 106.949999997 est la valeur la plus proche de la valeur que tu souhaites exprimer que ce type de données sache représenter.
 
L'expérience montre que seul moins d'un logiciel pour un million requiert une précision plus grande. Même les logiciels de pilotage ou de guidage d'avions, de fusées, de missiles, de satellites, etc. reposent sur les floats ou les doubles, malgré l'impossibilité de représenter la plupart des nombres de manière exacte. Et tu remarqueras pourtant que (sauf gros bug, évidemment), ils arrivent bien à destination...
 
fFluFf> Pour info, les physiciens et les chimistes travaillent très rarement avec des nombres exacts. Ils associent quasiment toujours les nombres qu'ils manipulent à une valeur d'imprécision. Et dans l'immense majorité des cas, cette imprécision est beaucoup plus grande que le manque de précision d'un double.
D'ailleurs, les standards IEEE définissant la précision des nombres réels à virgule flottante simple précision et double précision (c'est la dénomination complète), en clair, les types "float" et "double", ont été définis avec (si ce n'est par) les scientifiques qui en avaient besoin : c'est-à-dire, précisément, les physiciens et les chimistes dont tu parles.
 
Stolenkiss> Je confirme les dires de Kristoph et DuchZeWorld. En mathématiques, les nombres 0.999999... (suivi d'un nombre infini de chiffres 9) et 1.0 sont bel et bien égaux. Tout simplement parce que leur différence vaut zéro (plus exactement, 0.0000..., suivi d'un nombre infini de chiffres 0).


Message édité par BifaceMcLeOD le 12-08-2003 à 12:35:27
n°484917
ffluff
Challenge Everything
Posté le 12-08-2003 à 14:44:38  profilanswer
 

BifaceMcLeOD >  :jap:  
 
J'ai bien fait d'arrete les maths moi  [:ffluff]  
 
PS: l'histoire des scientifiques etait un exemple mal choisit c'est noté :p

n°484991
Taz
bisounours-codeur
Posté le 12-08-2003 à 15:25:25  profilanswer
 

fFluFf a écrit :

J'ai bien fait d'arrete les maths moi  [:ffluff]  

:non: tu va prendre optimisation avec Messine    [:tomtom75]

n°485028
nraynaud
lol
Posté le 12-08-2003 à 15:44:13  profilanswer
 

Je pose ça tel le chien moyen posant son oeuvre sur un trottoir, je pense que ça peut servir ....
 
What Every Computer Scientist Should Know About Floating Point Arithmetic (1991)  
 
Taz> 'tain t'as du courage de tenter d'expliquer ça dans un forum, j'ai pas tout lu mais c'est en général mal compris. T'as aussi explqé que y'a un énorme trou près du 0 et des valeurs dénormalisées (pour bien tout mélanger) ?


---------------
trainoo.com, c'est fini
n°485030
Taz
bisounours-codeur
Posté le 12-08-2003 à 15:49:56  profilanswer
 

non, j'ai pas parlé de la discontinuité de la représentation flottante si ça que tu veux dire.
 
je vais voir si j'ai le temps de faire un graphique avec l'axe des réels et des points pour montrer les valeurs représentées par les flottants
 
edit: puis c'est vrai faut trouver un lien qui explique bien le codage et la farce des valeurs dénormalisées


Message édité par Taz le 12-08-2003 à 15:51:14
n°485044
tomlameche
Et pourquoi pas ?
Posté le 12-08-2003 à 15:57:40  profilanswer
 

Kristoph a écrit :

Mais le résultat donné par Java est très précis ! Faut pas se faire avoir par la barrière psychologique des 9. Rappel : 999.99€ n'est *pas* beaucoup moins cher que 1000€. Dans ton cas abs(106.95 - 106.94999999) = 10^-8 ce qui est effectivement un résultat très précis.
 
Solution : comme tes calculs ont une imprécision à 10 chiffres, tu arrondis à 9 chiffres au moment de l'affichage.


Voui, et n'oublions pas que 0.999999...99999 ( une infinité de neuf ) est égal exactement à 1.


---------------
Gérez votre collection de BD en ligne ! ---- Electro-jazzy song ---- Dazie Mae - jazzy/bluesy/cabaret et plus si affinité
n°485046
Taz
bisounours-codeur
Posté le 12-08-2003 à 15:58:17  profilanswer
 
n°485059
Taz
bisounours-codeur
Posté le 12-08-2003 à 16:02:34  profilanswer
 

tomlameche a écrit :


Voui, et n'oublions pas que 0.999999...99999 ( une infinité de neuf ) est égal exactement à 1.

toi tu débarques  :o  :heink:

n°485062
tomlameche
Et pourquoi pas ?
Posté le 12-08-2003 à 16:03:38  profilanswer
 

Stolenkiss a écrit :

Si je peux me permettre,
 
   0.9999... ca tend vers 1, mais ca n'est pas 1. Juste par conscience mathématique. Parce que quand je lis ca:
 
   

Citation :

0,9999... = 1 par définition


 
   Je fais des bonds sur ma chaise :D
 
Stolenkiss


on parle bien de la limite !
quand on écrit 0.9999.... on sous-entend lim(sum(9*E-n)) de n = 1 vers l'infini  :o  


---------------
Gérez votre collection de BD en ligne ! ---- Electro-jazzy song ---- Dazie Mae - jazzy/bluesy/cabaret et plus si affinité
n°485070
tomlameche
Et pourquoi pas ?
Posté le 12-08-2003 à 16:07:16  profilanswer
 

Taz a écrit :

toi tu débarques  :o  :heink:  


désolé, j'ai répondu au fur et à mesure de ma lecture ... sans tenir compte  de la suite  :D  
 [:neowen]


---------------
Gérez votre collection de BD en ligne ! ---- Electro-jazzy song ---- Dazie Mae - jazzy/bluesy/cabaret et plus si affinité
n°485076
Taz
bisounours-codeur
Posté le 12-08-2003 à 16:13:20  profilanswer
 

[:samduloft]

n°485077
nraynaud
lol
Posté le 12-08-2003 à 16:13:33  profilanswer
 

tomlameche a écrit :


désolé, j'ai répondu au fur et à mesure de ma lecture ... sans tenir compte  de la suite  :D  
 [:neowen]  

Harko-style, tu te mets à l'assembleur en prétendant qu'il recoupe tous les autres langages aussi ?


---------------
trainoo.com, c'est fini
n°485085
tomlameche
Et pourquoi pas ?
Posté le 12-08-2003 à 16:18:12  profilanswer
 

nraynaud a écrit :

Harko-style, tu te mets à l'assembleur en prétendant qu'il recoupe tous les autres langages aussi ?


Comprends pas   :o


---------------
Gérez votre collection de BD en ligne ! ---- Electro-jazzy song ---- Dazie Mae - jazzy/bluesy/cabaret et plus si affinité
n°485090
Taz
bisounours-codeur
Posté le 12-08-2003 à 16:21:30  profilanswer
 

bon, stop le bruit.

n°485396
schnapsman​n
Zaford Beeblefect
Posté le 12-08-2003 à 20:32:44  profilanswer
 

fFluFf a écrit :

je sais que :
 
mais de la à dire 0.999999...=1  :heink:  
 


 
bah vu comme la limite d'une série convergente, c'est parfaitement correct comme notation [:spamafote]


---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
n°485397
ffluff
Challenge Everything
Posté le 12-08-2003 à 20:38:31  profilanswer
 

Je pense qu'a la 50 000 fois je finirai peut etre par le savoir que 1=0.9999...
 
 
je sais que c'est les vacances et que mon cerveaux tourne au ralentis (qui a dis comme d'hab ??) mais y a des limites non ? [:ffluff]

n°485759
liengy
Approuved !!!
Posté le 13-08-2003 à 10:10:20  profilanswer
 

Juste par curiosité j'en ai discuté avec des amis plutôt mathématiciens qui m'ont répondu que comme Q est dense dans R, 1 n'est jamais égal = 0.9999999.... (une infinité de 9).....
 
 
Moi g ma solution... donc c juste pour la polémique....

n°485760
LetoII
Le dormeur doit se réveiller
Posté le 13-08-2003 à 10:13:17  profilanswer
 

liengy a écrit :

Juste par curiosité j'en ai discuté avec des amis plutôt mathématiciens qui m'ont répondu que comme Q est dense dans R, 1 n'est jamais égal = 0.9999999.... (une infinité de 9).....
 
 
Moi g ma solution... donc c juste pour la polémique....


 
Bon j'ai compris je vais resortir mes cours de maths, les dépoussièrer et me replonger dedans... Enfin en même temps si qqn a une def et une démo pour appuyer son point de vue ça m'éviterai cette peine  [:ddr555]


---------------
Le Tyran
n°485770
verdoux
And I'm still waiting
Posté le 13-08-2003 à 10:23:58  profilanswer
 

1/9 = 0.111...
 
0.999... = 9 * 0.111... = 9 * (1/9) = 1  
 
:D

n°485772
LetoII
Le dormeur doit se réveiller
Posté le 13-08-2003 à 10:25:21  profilanswer
 

verdoux a écrit :

1/9 = 0.111...
 
0.999... = 9 * 0.111... = 9 * (1/9) = 1  
 
:D


 
 :heink: Nan  [:tapai]  [:ddr555]


---------------
Le Tyran
n°485778
tomlameche
Et pourquoi pas ?
Posté le 13-08-2003 à 10:29:36  profilanswer
 

liengy a écrit :

Juste par curiosité j'en ai discuté avec des amis plutôt mathématiciens qui m'ont répondu que comme Q est dense dans R, 1 n'est jamais égal = 0.9999999.... (une infinité de 9).....
 
 
Moi g ma solution... donc c juste pour la polémique....


Y a un genre de démo amusante pour ce truc :
Soit x = 0.999999......
Donc : y = 10*x = 9.999999.....
D'où : y - x = 9.9999... - 0.99999... = 9 et donc 9*x = 9 et x = 1 ...
Le fait Q soit dense dans R, ça signifit justement que un pour un réel donné r, il existe une suite de Q  qn qui tend vers r. On peut donc dire ( mais il est vrai que c'est un abus d'écriture ) que 0.9999... = 1 puisque par cette notation, on entend la limite de la suite qn = Sum(9E-n) pour n >= 1.
Enfin bref, c'est juste, ça sert à rien de tergiverser des heures la dessus.
 
EDIT : j'ai encore répondu après la bataille ... Taz, pas tapé  :(


Message édité par tomlameche le 13-08-2003 à 10:31:02
n°485782
Taz
bisounours-codeur
Posté le 13-08-2003 à 10:31:49  profilanswer
 

LetoII a écrit :


 
 :heink: Nan  [:tapai]  [:ddr555]  

ben si, c'est la même chose j'ai dit
 

Citation :

la preuve par 3

:pfff:  
je vais fermer le topic si vous arrétez pas de répetez la même chose.
 
edit: typo


Message édité par Taz le 13-08-2003 à 10:32:17
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4

Aller à :
Ajouter une réponse
 

Sujets relatifs
Java + XML + Crystal Reports9 dev ----> Cherrytree, tu es là ?bouquin d'initiation à la prog nécessitant FORTE FOR JAVA.
connaitre la largeur d'une chaine en java (ou plutôt jsp)(Java) GridBagLayout et garder une colonne de largeur fixe
[Java] Ecrire un fichier MIDIJava JNI
JIT compiler pour java[JAVA XML] Une JSP bien formée
[JAVA] lancer un script depuis java[JAVA] FTP sous Eclipse, comment activer le transfert ASCII?
Plus de sujets relatifs à : [java] Pb de multiplication de double ?????


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)