Bien que les réels soient connus pour être imprécis, ils sont précis à 100% même pour les très grands nombres, tant qu’ils n’utilisent pas de point décimal (= nombres entiers).
Les nombres jusqu’à 53 bits, ou plus exactement, [-(2^53)+1, (2^53)-1], c’est-à-dire une plage allant de -9 007 199 254 740 992 à 9 007 199 254 740 992, seront représentés exactement.
Plus d’informations sur les réels
Si vous consultez la définition de la virgule flottante binaire en double précision sur Wikipedia, voici ce que vous trouverez à propos de la division et de la précision des chiffres :
» La précision du significand de 53 bits donne une précision de 15 à 17 chiffres décimaux significatifs (2-53 ≈ 1,11 × 10-16). Si une chaîne décimale comportant au maximum 15 chiffres significatifs est convertie en représentation en double précision IEEE 754, puis reconvertie en une chaîne décimale comportant le même nombre de chiffres, le résultat final devrait correspondre à la chaîne d’origine. Si un nombre en double précision IEEE 754 est converti en une chaîne décimale comportant au moins 17 chiffres significatifs, puis reconverti en représentation en double précision, le résultat final doit correspondre au nombre d’origine. »
Convertir en chaîne de caractères
S’il était possible d’effectuer des calculs sur de grands nombres avec le type Real pendant de nombreuses années, la conversion vers ou depuis le texte était limitée à l’utilisation de la notation scientifique à 12 chiffres, ce qui entraînait une perte de précision.
Avec 4D v19 R6, nous avons amélioré la précision et la conversion d’un nombre réel (présentant un nombre entier) en texte.
L’amélioration de la conversion en chaîne de caractères concerne la commande String() et les commandes JSON et XML retournant les nombres sous forme de chaîne de caractères.
Éditeur de code
Par exemple, vous pouvez maintenant taper dans l’éditeur de code :
$r:=2147483647000000
et il restera tel quel au lieu d’être formaté comme :
$r:=2.147483647e+15
Bon codage !