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

时间:2008-10-11 04:11:42

标签: java c floating-point

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

2 个答案:

答案 0 :(得分:12)

对于Java,请查看BigDecimal

答案 1 :(得分:8)

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

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

在C中显示双精度:

printf("%10f", dbl);