gpt4 book ai didi

android - 带有括号的算术表达式的计算结果为零

转载 作者:行者123 更新时间:2023-11-29 18:14:05 25 4
gpt4 key购买 nike

我有上面的代码

private float farenaitCelsiusMath(float f) {

float result;
result = (f-1)*(2/3);
return result;
}

当我在模拟器上运行应用程序时,无论我给 f 赋值什么,它的计算结果都是 0。

但是当 result = (f-1)*2/3; 的第三行计算正确时。

为什么会这样?关于 Java 中的算术表达式,有什么我应该知道的吗?

最佳答案

因为 (2/3) 是整数除法,它的计算结果为 0,因为整数除法会被截断。

  • (f-1) 是 FLOAT 因为 f 是 FLOAT
  • (2/3) 是 INTEGER 值 0,因为整数除法会截断
  • (f-1)*(2/3) 是 FLOAT,因为 (f-1) 是 FLOAT,而值 0 因为任何时间 0 都是 0。

当它是 (f-1)*2/3 时,它的计算结果为

  • (f-1) 是 FLOAT 因为 f 是 FLOAT;
  • (f-1)*2 是 FLOAT 因为 (f-1) 是 FLOAT
  • (f-1)*2/3 是 FLOAT 因为 (f-1)*2 是 FLOAT

为了得到你期望的结果,让它成为 (2./3)(2/3.) -- 由于小数点,两者都被提升为 FLOAT -- 或者甚至更好地使用强制转换 ((float)2/(float)3) 使其显式化。这在运行时不会产生任何开销,全部由编译器完成。

关于android - 带有括号的算术表达式的计算结果为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9134478/

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