我正在尝试用Java创建一个物理计算程序。因此,我使用了一些公式,但它们总是返回错误的值。我将它们分解并发现:(到目前为止,我使用了long
。)
8 * 830584000 = -1945262592
这显然是错误的。公式中涉及到分数和非常大的数字,例如6.095E23和4.218E-10。
那么,哪种数据类型最适合获得正确的结果呢?
double
是最佳选择。它已经足够用于电影《星际穿越》中的虫洞建模,因此,我敢说,对于你来说可能也足够好了。请注意,它仅提供约15个十进制有效数字的精度作为大致指南。8.0 * 830584000
以便以double
精度进行评估。8.0
是一个double
文字,并导致其他参数被提升为类似类型。BigDecimal
仍然是更好的选择。 - daniu由于物理计算涉及大量的浮点运算,因此在这种计算中使用浮点数据类型可能是一个不错的选择。希望这能有所帮助。:)
double
和BigDecimal
外,还应该看一下long
和BigInteger
。 - C-Ottoint
字面量,而不是long
,所以计算会溢出。(即使你稍后将其分配给long
变量;伤害已经造成。)如果你尝试8L * 830584000L
,你将得到正确的输出:6644672000。 - Ted Hopp