3

当我给 Java 和 C 提供大的浮点数和双精度数(在十亿范围内)时,它们会将它们转换为科学计数法,从而在此过程中失去精度。我怎样才能阻止这种行为?

4

2 回答 2

13

对于 Java,请查看BigDecimal

于 2008-10-11T04:18:19.553 回答
8

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

浮点数通常具有大约 6 位的精度,这使得它们不适合保存数十亿的数字。Doubles 的精度约为 15 位,因此它应该能够以完全准确的方式保存数万亿以上的数字。

在 C 中显示双精度:

printf("%10f", dbl);
于 2008-10-11T04:19:27.913 回答