Aunque se sabe que los Reales son poco precisos, son 100% exactos incluso para números muy grandes, siempre que no utilicen un punto decimal (=integros).
Los números de hasta 53 bits, o más exactamente, [-(2^53)+1, (2^53)-1], es decir, un rango de -9.007.199.254.740.992 a 9.007.199.254.740.992, se representarán exactamente.
Más sobre los Reales
Si miras la definición de punto flotante binario de doble precisión en Wikipedia, esto es lo que encontrarás sobre la división y precisión de los dígitos
«La precisión del significante de 53 bits da una precisión de 15 a 17 dígitos decimales significativos (2-53 ≈ 1,11 × 10-16). Si una cadena decimal con un máximo de 15 dígitos significativos se convierte a la representación de doble precisión IEEE 754 y luego se convierte de nuevo a una cadena decimal con el mismo número de dígitos, el resultado final debería coincidir con la cadena original. Si un número de doble precisión IEEE 754 se convierte a una cadena decimal con al menos 17 dígitos significativos y luego se vuelve a convertir a la representación de doble precisión, el resultado final debe coincidir con el número original.»
Convertir a cadena
Aunque durante muchos años era posible realizar cálculos sobre números grandes con el tipo Real, la conversión a o desde el texto se limitaba a utilizar la notación científica de 12 dígitos, con lo que se perdía precisión.
Con 4D v19 R6, hemos mejorado la precisión y la conversión de un número Real (que presenta un entero) en un Texto.
La mejora de la conversión a cadena afecta al comando String() y a los comandos JSON y XML que devuelven números en forma de cadena.
Editor de código
Por ejemplo, ahora puede escribir en el editor de código
$r:=2147483647000000
y se quedará como está en lugar de formatearse como
$r:=2.147483647e+15
¡Feliz codificación!