Java - 使用 double 更精确

Java - Be more precise with double

我目前正在为 uni 编写一个项目,我想知道是否有任何好的做法可以更精确地 with 双精度值。也就是说,如果我直接在 return 语句中只写一个长表达式,在精度上是否有任何差异,或者如果我将表达式拆分为 final 变量(使其也更具可读性,通过方法)?例如,假设我有以下公式:Math.sin(a) / Math.cos(b) + Math.tan(c) / d;是不是这样写比较好?

final double sinA = Math.sin(a);
final double cosB = Math.cos(b);
final double tanC = Math.tan(c);
return sinA / cosB + tanC / d;

提前致谢!

如果您的 JVM/JIT 正确实现了 Java 语言规范所要求的 IEEE754,那将不会有任何区别。

我个人会写

double ret = Math.sin(a) / Math.cos(b) + Math.tan(c) / d;
return ret;

因为这允许我在 return ret; 语句上设置一个行断点,这样我就可以检查 return 值而无需花哨的调试工具,您可能无法在生产服务器上使用这些工具凌晨3点!我发现你写的方式不清楚:依赖变量名比标准函数名更容易重构损坏。

您可以相信编译器会优化掉多余的变量 ret