我目前正在为uni编写一个项目,我想知道是否有任何好的做法可以更精确地with double值。也就是说,如果我直接在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;
语句上设置行断点,这使我可以检查返回值,而无需使用凌晨3点在生产服务器上可能无法使用的调试工具!我发现您编写它的方式尚不清楚:依赖变量名比标准函数名更容易重构损坏。
您可以相信编译器将优化出额外的变量ret
。