如何防止浮点数和双精度数在Java和C中被截断?

chu*_*tar 2 c java floating-point

当我给Java和C大浮点数和双倍数(在十亿范围内)时,它们将它们转换为科学记数法,在此过程中失去了精确度.我怎么能阻止这种行为?

Mic*_*ter 12

对于Java,请查看BigDecimal


Jam*_*ran 8

转换为科学记数法纯粹是对它如何显示的影响.更改显示是一个输出方式(格式说明符)

浮动通常具有大约6位数的精度,这使得它们不适合保持数十亿的数字.双打有大约15位数的精度,所以它应该能够完全准确地保持数字超过数万亿.

要在C中显示双精度:

printf("%10f", dbl);
Run Code Online (Sandbox Code Playgroud)