java - 什么更好 : cast to double or adding double zero?

标签 java performance

让我们有 4 个 int 变量:a, b, c, d

并且需要计算(a * b)/(c * d)

有两种方法:

1) double 结果 = ((double)(a * b))/(c * d)

2) 双结果 = (a * b)/(c * d + 0d)

每种方式的利弊是什么?

最佳答案

如果你不介意我这么说,那你的做法确实很糟糕。

(a * b)仍在积分算术中计算的,因此会受到回绕的影响。 (这只会让我相信多余的括号是魔鬼的缩小版。)在 C 和 C++ 中,情况更糟,溢出行为是未定义,编译器保留吃掉你的猫的权利。

比这更糟糕的是,c * d两种 情况下也是用整数算术求值的!此表达式的结果 转换为double

我相信 1.0 * a * b/c/d 是最清晰的写法 a, b, cd 在评估之前全部提升为 double 类型。我的方式从一开始就明确了您的意图。

关于java - 什么更好 : cast to double or adding double zero?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39639396/

相关文章:

java - 在 Java 应用程序中编辑/etc/hosts/

java - 加载特定于环境的属性以与 PropertyPlaceholderConfigurer 一起使用?

java - 让我的 Canvas 无需大修即可滚动

performance - StateT over Reader 和 ReaderT over State 之间有什么显着区别吗?

r - 如何加速或矢量化 for 循环?

string - 将字符串与拼写错误匹配的快速方法

java - 如何比较 Android Firebase 中不同引用的两个子节点?

java - volley _ jsonArrayRequest 与 POST 方法

java - 不安全,反射访问与 toCharArray(性能)

performance - 在 WHERE 中使用条件 =、>=、<= 优化 LOOP AT