5174 sujets

Le Bar du forum

Pages :
(reprise du message précédent)

Juste pour info, javascript stocke tous les nombres, qu'ils soient à virgule flottante ou non, selon le format float, qui est sur 32 bits.

Dans un nombre à virgule flottante écrit en binaire, on a 3 parties :
- Le bit de signe
- La valeur réelle
- L'exposant qui possède lui aussi son bit de signe.


Un nombre s'exprime toujours selon la forme n * 10^m ou n * 2^m (j'ai un doute tout d'un coup). Faudrait regarder la norme IEE754 mais je n'ai pas le temps de vérifier maintenant.
QuentinC a écrit :
Juste pour info, javascript stocke tous les nombres, qu'ils soient à virgule flottante ou non, selon le format float, qui est sur 32 bits.

Dans un nombre à virgule flottante écrit en binaire, on a 3 parties :
- Le bit de signe
- La valeur réelle
- L'exposant qui possède lui aussi son bit de signe.

Un nombre s'exprime toujours selon la forme n * 10^m ou n * 2^m (j'ai un doute tout d'un coup). Faudrait regarder la norme IEE754 mais je n'ai pas le temps de vérifier maintenant.

+1, sauf qu'en JavaScript on utilise l'équivalent de double en Java, donc 64 bits.

Et en effet, les nombres sont stockés sous la forme (-1)^s * m * 2^e : signe, mantisse et exposant.
Donc au final ce serait "simplement" une impossibilitée de stocker le nombre flotant sur les 32bits qu'utilise JS. Et que dans mon exemple précédent avec le *1000 puis /10 on rentre dans le cas ou le stockage peut se faire (donc aucune génération d'arrondi).

Maintenant petite question. Si je veux absolument ne PAS obtenir des résultats ressemblant à 570.67*100 que dois-je faire ? Je me doute que la "solution" du *1000/10 n'en est pas une..... Si j'ai bien compris cela est impossible et un peu aléatoire vu que l'on ne peut pas savoir à l'avance si les nombres rempliront le nombre de bits.

Rude

PS : pourquoi je ne vois le message de Julien Royer QUE quand je fais répondre et pas dans le post. O_o y'à qu'une page pourtant... Bizarre.

Edit : Maintenant que j'ai posté il s'affiche... très bizarre.
Modifié par ffwrude (16 May 2008 - 10:44)
ffwrude a écrit :
Maintenant petite question. Si je veux absolument ne PAS obtenir des résultats ressemblant à 570.67*100 que dois-je faire ? Je me doute que la "solution" du *1000/10 n'en est pas une..... Si j'ai bien compris cela est impossible et un peu aléatoire vu que l'on ne peut pas savoir à l'avance si les nombres rempliront le nombre de bits.


La solution la plus raisonnable est amha de choisir la précision des résultats en utilisant "Math.round(570.67*100,n)" ou n est le nombre de décimales à garder pour l'arrondi... c'est du moins la seule qui je pense permet un contrôle efficace des résultats.

A noter que par exemple Math.round(570.67*100, 500) retournera tout simplement "57067" étant donné qu'ici un arrondi à la 500ème décimal va faire s'arrondir le chiffre à l'entier...
a écrit :

+1, sauf qu'en JavaScript on utilise l'équivalent de double en Java, donc 64 bits.

En effet, au temps pour moi, je me suis trompé sur ce coup là.

a écrit :
Et en effet, les nombres sont stockés sous la forme (-1)^s * m * 2^e : signe, mantisse et exposant.

Ah, voilà le terme que je ne retrouvais plus quand je parlais de valeur réelle : la mantisse.
a écrit :

PS : pourquoi je ne vois le message de Julien Royer QUE quand je fais répondre et pas dans le post. O_o y'à qu'une page pourtant... Bizarre.
Edit : Maintenant que j'ai posté il s'affiche... très bizarre.

Ce bug m'est déjà arrivé aussi à moi.
Et une ligne de plus sur la to do list de Dew, une !
a écrit :
Et une ligne de plus sur la to do list de Dew, une !


Sur la to Dew list tu veux dire Smiley cligne

Rude
Modifié par ffwrude (16 May 2008 - 17:50)
Dire que je viens sur Alsacréations pour me changer la tête des maths...

Bon, l'égalité 0.9999 ... (aussi noté 0.9 avec le 9 souligné, et dont l'écriture la plus rigoureuse est la série écrite plus haut) est vraie.

Il y a différentes méthodes de le démontrer: série, fraction (comme au dessus, et au risque de te contredire, FlorentV, 1/3 est bien égal à 0.3 souligné c'est à dire 0.3333) ou encore une méthode plus simple que j'ai vu la première semaine de cours Smiley smile

L'idée, c'est qu'on pose x=0.99999 ...

Alors 10x=9.999999 .... ce qui est vrai, puisqu'il y a un nombre infini de 9.
Donc 10x = 9 + x
Et donc 9x=9 d'où x=1.


On pourrait y voir un paradoxe, et cela peut sembler étrange, mais ça démontre une réalité bien triste: le chiffre 1 est compliqué à écrire sous forme décimale, puisqu'il y a deux écritures possibles !

Edit: vous pouvez regarder l'article wikipedia sur le sujet. En ce qui concerne Javascript, je n'en ai aucune idée, mais le soucis ne vient à mon avis pas de ce qui est écrit au dessus; je pencherai, à tout hasard, pour une erreur d'arrondi dans les étapes de calcul)
Modifié par Sylvain (17 May 2008 - 14:54)
a écrit :

L'idée, c'est qu'on pose x=0.99999 ...

Alors 10x=9.999999 .... ce qui est vrai, puisqu'il y a un nombre infini de 9.
Donc 10x = 9 + x
Et donc 9x=9 d'où x=1.


Cela me rappelle un ami qui me disait qu'il avait étudié au lycée les "variations de la constante" (Si ca c'est pas un paradoxe). Y'à t'il une quelquonque corélation entre ca ? Que la constante 1 puisse varier entre 0.9(Souligné) et 1 ? Ou est-ce véritablement une égalitée ?

Rude
Ici il n'y a pas de variation, c'est une égalité mathématiques 1 = 0.9999999999999...
Quand à la "variation de la constante", en effet c'est quelque chose qu'on étudie dans certains domaine d'analyse je crois (Ah les maths, ça me manque !). Souvent, ça veut juste dire que dans une équation où il y a une constante (mais qui n'ets pas fixée, c'est juste une lettre), on étudie le comportement de l'équation avec différentes constantes.
ffwrude a écrit :

Cela me rappelle un ami qui me disait qu'il avait étudié au lycée les "variations de la constante" (Si ca c'est pas un paradoxe). Y'à t'il une quelquonque corélation entre ca ? Que la constante 1 puisse varier entre 0.9(Souligné) et 1 ? Ou est-ce véritablement une égalitée ?


Non, c'est une réelle égalité. Le chiffre 1 peut également s'écrire 0.999999 avec des 9 à l'infini. C'est le système décimal, avec la virgule, qui provoque ce qui semble être un paradoxe, mais c'est bien vrai, puisque démontrable.
Si tu savais le nombre de choses qu'on peut démontrer qui paraissent, à première vue, absurde...

En ce qui concerne la variation de la constante, je ne vois pas trop comment t'expliquer ceci en trois mots, mais ce n'est que le nom d'une méthode qui permet de trouver des solutions particulières d'équation différentielle linéaire du premier ou du second ordre non homogène (c'est à dire sans second membre).

Bref, ce n'est qu'un nom. Plus d'informations ici si tu le souhaites.


Faute de pouvoir faire du CSS, j'arrive encore à me rendre utile sur Alsacréations, à quand l'ouverture du forum "Assistance Maths" ? Smiley lol
Administrateur
Mmh ... pas tout de suite sera ma réponse diplomatique Smiley ravi Et puis tu peux toujours aller sur 2e4u, n'est-ce pas Quentin? Smiley cligne

"variation de la constante": moui abus de langage. Ce n'est pas à la fois constant et variable. On prend ce qui *était* une constante et on décide de le faire varier (pas dans les mêmes équations). Et on garde le même nom histoire d'être certain qu'il y a confusion Smiley lol
a écrit :

Et puis tu peux toujours aller sur 2e4u, n'est-ce pas Quentin?

Ca fait bien longtemps que je n'y joue plus, je n'ai plus vraiment le temps, et les énigmes que je suis censé résoudre sont visuelles sur les 4 séries. Mais j'y vais encore de temps en temps pour poster des tournois... d'ailleurs j'ai prévu d'en poster un à la fin juin.
Felipe a écrit :
Mmh ... pas tout de suite sera ma réponse diplomatique Smiley ravi Et puis tu peux toujours aller sur 2e4u, n'est-ce pas Quentin? Smiley cligne


Felipe, je te hais. Je viens de perdre un après midi par ta faute! Fichue énigme 14...
Modifié par Lanza (26 May 2008 - 18:15)
Pages :