Embora os Reais sejam conhecidos por não serem precisos, são 100% exactos mesmo para números muito grandes, desde que não utilizem um ponto decimal (=inteiros).
Números até 53 bits, ou mais exactamente, [-(2^53)+1, (2^53)-1], ou seja, um intervalo de -9.007.199.254.740.992 a 9.007.199.254.740.992, serão exactamente representados.
Mais sobre Reais
Se olhar para a definição de ponto flutuante binário de dupla precisão na Wikipédia, isto é o que vai encontrar sobre a divisão e precisão dos dígitos:
“A precisão de 53-bit significand dá de 15 a 17 dígitos decimais significativos (2-53 ≈ 1,11 × 10-16). Se uma cadeia decimal com no máximo 15 dígitos significativos for convertida para representação de dupla precisão IEEE 754 e depois convertida de volta para uma cadeia decimal com o mesmo número de dígitos, o resultado final deve corresponder à cadeia original. Se um número de precisão dupla IEEE 754 for convertido para uma cadeia decimal com pelo menos 17 dígitos significativos, e depois convertido de volta para uma representação de precisão dupla, o resultado final deve coincidir com o número original”.
Converter para cadeia de caracteres
Enquanto foi possível fazer cálculos sobre grandes números com o tipo Real durante muitos anos, a conversão de ou para o texto limitou-se a utilizar uma notação científica de 12 dígitos, resultando na perda de precisão.
Com 4D v19 R6, melhorámos a precisão e a conversão de um número Real (apresentando um número inteiro) num Texto.
A melhoria da conversão para string diz respeito ao comando String() e aos comandos JSON e XML que retornam números em forma de string.
Editor de Código
Por exemplo, pode agora digitar o editor de código:
$r:=2147483647000000
e ficará como está, em vez de ser formatado como:
$r:=2,147483647e+15
Feliz codificação!