Possible d'augmenter la précision des nombres à virgule flottante ?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Salut.Existe-t-il un moyen de spécifier la précision en virgule flottante utilisée par JSL lors de l'exécution de calculs ?C'est-à-dire le nombre de chiffres significatifs utilisés.Par exemple, sur mon ordinateur, 1 moins 1e-15 est égal à 0,999... (15 "9").Mais si j'essaie 1 moins 1e-16, j'obtiens juste 1.
x = 1 ;
y = 1e-15 ;
z = x - y ;
Afficher(z); //z = 0,999999999999999 (alias 15 décimales)
y = 1e-16 ;
z = x - y ;
Afficher(z); //z = 1
Merci.
Re : Possible d'augmenter la précision des nombres à virgule flottante ?Voici le script complet que j'ai exécuté pour vous donner les résultats que j'ai publiés.
X = 1 ;
y = 1e-15 ;
z = X - y ;
Montrer ( z ) ; //z = 0,999999999999999 (alias 15 décimales)
y = 1e-16 ;
z = X - y ;
Montrer ( format ( z , "Déc fixe" , 30 , 20 )) ;
J'ai exécuté le script en 11.21.1 et j'ai obtenu les résultats que vous avez signalés.La différence est donc le passage à la version 12.2.
Re : Possible d'augmenter la précision des nombres à virgule flottante ?Re-salut Jim.A également réalisé une autre question importante.Dans votre message, vous avez indiqué que le résultat du problème 1 moins 1e-16 était :
0.999999999999999 8 9000
(Notez le "8" à la 16ème décimale)
Était-ce une faute de frappe ?
Re : Possible d'augmenter la précision des nombres à virgule flottante ?Jim,
Je suis désolé mais cela ne semble pas fonctionner sur mon système.J'ai utilisé la commande format et la réponse est toujours sortie comme "1".Évidemment, cela fonctionne sur votre système, mais pas sur le mien.Mon entreprise utilise toujours JMP 11.2.1, si cela compte.Mon ordinateur a moins d'un an.
Question : la documentation de Format est un peu déroutante.
s = Format(x, formatstring, , , < <)
Sur cette base, le "20" dans votre commande occupe le champ du code de devise et le "30" occupe le champ ndecimal.Naturellement, je me soucie de ce dernier.A quoi sert le "20" ?
Re : Possible d'augmenter la précision des nombres à virgule flottante ?JMP utilise la prise en charge matérielle standard des virgules flottantes.Virgule flottante IEEE - Wikipédia, l'encyclopédie libre
Il y a environ 15 chiffres significatifs, comme vous l'avez remarqué.
JMP ne prend pas en charge les représentations plus longues.(Les bibliothèques Big Int et Big Num ne sont pas dans JMP pour le moment)
Comme txnelson souligne, parfois un format par défaut pour l'impression d'un nombre peut ne pas afficher les 15 chiffres éventuellement intéressants.
Re : Possible d'augmenter la précision des nombres à virgule flottante ?Ce que vous voyez, c'est que JMP tente d'afficher les données dans un format convivial par défaut.La précision derrière la valeur ne change pas lors de la spécification d'un format pour afficher la valeur.Donc, si vous spécifiez d'afficher la valeur de "z" avec plus de précision, il le fera.
Show(format(z, "Fixed Dec", 30, 20)); = "0,99999999999999989000" ;