gpt4 book ai didi

java - -x 与 x * -1.0f 之间有区别吗?

转载 作者:行者123 更新时间:2023-12-01 16:52:40 25 4
gpt4 key购买 nike

在java中,如果变量也是浮点型,则对变量求反与将变量乘以 float 减一有区别吗?

最佳答案

在 JLS §15.15.4“一元减运算符 -”中,我们发现

For floating-point values, negation is not the same as subtraction from zero, because if x is +0.0, then 0.0-x is +0.0, but -x is -0.0. Unary minus merely inverts the sign of a floating-point number. Special cases of interest:

If the operand is NaN, the result is NaN. (Recall that NaN has no sign (§4.2.3).)

If the operand is an infinity, the result is the infinity of opposite sign.

If the operand is a zero, the result is the zero of opposite sign.

(突出显示我的)

可以在发出的字节码中看到差异。一元减号是一个简单的 fneg,而 (-1f * x) 会产生 floadfmul,其中可能会稍微慢一些。

我不知道 JIT 编译器是否会优化它。

为了提高可读性,使用 -x 通常更好。

关于java - -x 与 x * -1.0f 之间有区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36841004/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com