gpt4 book ai didi

Java:变量赋值问题

转载 作者:行者123 更新时间:2023-11-29 03:19:58 26 4
gpt4 key购买 nike

只是一个简短的问题,我可能会觉得问这个问题很愚蠢,但仍然想知道为什么会这样......!

无论如何,简单的例子:

x is a double.

double conversion = (x-32)*5/9;

这在数学上做得很好。

double  conversion = (x-32)*(5/9);

这不好,因为 (5/9) 被视为 int,因此结果总体为 0。

double  conversion = (x-32)*(5f/9f);

这在数学上做得很好,因为它明确地将 5/9 值设为 float 。

所以我的问题是:为什么第一个等式可以完美地工作? ( 双重转换 = (x-32)*5/9; )

如果 5/9 应该是一个整数,为什么它不被设为 0? 5/9 与 (5/9) 有何不同?

最佳答案

区别在于先乘法还是先除法,以及这些运算的类型。

这个:

(x - 32) * 5 / 9

相当于:

((x - 32) * 5) / 9

所以如果x的类型是double,那么x - 32的类型就是double,所以 5 被提升为 double,乘法在 double 算术中完成,给出 double 结果,并且然后除法也是double算术中完成。

即使 x 是一个 integer 类型,你还是先做乘法,这可能会给你一个大于 9 的值(在你的测试用例中),给你留下一个非零的结果。比如x是45,那么x-32就是13,(x - 32) * 5就是65,综合结果是 7,然后在赋值时转换为 7.0。如果 x 是一个值为 45.0 的 double,这与您得到的结果不同,但它仍然比乘以 0 好...

关于Java:变量赋值问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24264029/

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