Obwohl die Reals als ungenau gelten, sind sie auch für sehr große Zahlen zu 100 % genau, solange sie keinen Dezimalpunkt (=Ganzzahlen) verwenden.
Zahlen bis zu 53 Bit, genauer gesagt [-(2^53)+1, (2^53)-1], d. h. ein Bereich von -9.007.199.254.740.992 bis 9.007.199.254.740.992, werden exakt dargestellt.
Mehr über Reals
Wenn Sie sich die Definition von Double-precision binary floating-point auf Wikipedia ansehen, werden Sie Folgendes über die Aufteilung und Genauigkeit der Ziffern finden:
„Die 53-Bit-Präzision des Signifikanten ergibt eine Genauigkeit von 15 bis 17 signifikanten Dezimalziffern (2-53 ≈ 1,11 × 10-16). Wenn eine dezimale Zeichenkette mit höchstens 15 signifikanten Ziffern in die IEEE 754-Doppelpräzisionsdarstellung konvertiert und dann wieder in eine dezimale Zeichenkette mit der gleichen Anzahl von Ziffern umgewandelt wird, sollte das Endergebnis mit der ursprünglichen Zeichenkette übereinstimmen. Wird eine IEEE 754-Zahl mit doppelter Genauigkeit in eine Dezimalzeichenkette mit mindestens 17 signifikanten Ziffern umgewandelt und dann wieder in die doppelte Genauigkeit zurückgewandelt, muss das Endergebnis mit der ursprünglichen Zahl übereinstimmen.“
In eine Zeichenkette umwandeln
Während es viele Jahre lang möglich war, mit dem Typ Real Berechnungen mit großen Zahlen durchzuführen, war die Konvertierung in oder aus dem Text auf die Verwendung der 12-stelligen wissenschaftlichen Notation beschränkt, was zu einem Verlust an Präzision führte.
Mit 4D v19 R6 haben wir die Genauigkeit und die Umwandlung einer Realzahl (die eine ganze Zahl darstellt) in einen Text verbessert.
Die Verbesserung der Umwandlung in einen String betrifft den String()-Befehl und die JSON- und XML-Befehle, die Zahlen in String-Form zurückgeben.
Code-Editor
Zum Beispiel können Sie jetzt im Code-Editor eingeben:
$r:=2147483647000000
und es wird so bleiben, wie es ist, anstatt als formatiert zu werden:
$r:=2.147483647e+15
Viel Spaß beim Programmieren!