【发布时间】:2008-10-11 04:11:42
【问题描述】:
当我给 Java 和 C 提供大的浮点数和双精度数(在十亿范围内)时,它们会将它们转换为科学计数法,从而在此过程中失去精度。我怎样才能阻止这种行为?
【问题讨论】:
-
您是否尝试过将它们作为字符串传递?它们将保持不变。
标签: java c floating-point
当我给 Java 和 C 提供大的浮点数和双精度数(在十亿范围内)时,它们会将它们转换为科学计数法,从而在此过程中失去精度。我怎样才能阻止这种行为?
【问题讨论】:
标签: java c floating-point
对于 Java,请查看 BigDecimal
【讨论】:
转换为科学记数法纯粹是其显示方式的影响。更改显示取决于您如何输出它(格式说明符)
浮点数通常具有大约 6 位的精度,这使得它们不适合保存数十亿的数字。 Doubles 的精度约为 15 位,因此它应该能够以完全准确的方式保存数万亿以上的数字。
在 C 中显示双精度:
printf("%10f", dbl);
【讨论】: