当我给Java和C大浮点数和双倍数(在十亿范围内)时,他们将它们转换为科学记数法,在此过程中失去了精确度。我怎么能阻止这种行为?
答案 0 :(得分:12)
对于Java,请查看BigDecimal
答案 1 :(得分:8)
转换为科学记数法纯粹是对它如何显示的影响。更改显示是一个输出方式(格式说明符)
浮点数通常具有大约6位数的精度,这使得它们不适合保持数十亿的数字。双打有大约15位数的精度,因此它应该能够完全准确地保持数字超过数万亿。
在C中显示双精度:
printf("%10f", dbl);