Mic*_*ael 1 java math floating-point integer
假设,我需要计算3 * (2 / 3) = 2
但是3 * (2 / 3) = 0
在整数运算中.因此,它看起来像我应该使用浮点运算3 * (2.0 / 3) = 2.0
和投浮点结果int
.
是否有意义?你怎么会避免在这里施展?
在这个特定的例子中,你可能最好将表达式重新排列为3 * 2 / 3
或3 / 3 * 2
.这样,您将仅使用整数数学获得精确结果.
使用浮点数学是更通用的解决方案,但您需要了解舍入问题.一般来说,你不应该期望它x * (y / x)
会准确地给你什么y
时候x
和y
浮点数.
如果您知道结果是整数,或者只是想将其四舍五入到最接近的整数,则可以使用Math.round()
:
Math.round(3 * (2f / 3))
Run Code Online (Sandbox Code Playgroud)
简单地铸造的结果int
是不是一个好主意,因为浮点数是不精确的,而这样的投只会截断数.