【发布时间】:2020-06-22 14:48:01
【问题描述】:
我目前正在为 uni 编写一个项目,我想知道是否有任何好的做法可以更精确地使用双值。也就是说,如果我直接在 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;
提前谢谢你!
【问题讨论】:
-
恕我直言,编译器无论如何都会对其进行优化,因此两种方式都可能产生相同的字节码。如果您正在寻找任意精度,您可能需要使用
BigDecimal -
Double 对于几乎任何可能的用例来说都足够精确。我会问自己为什么我认为我需要更精确并解决这个问题。也就是说,如果出于某种原因您确实需要这种精度,那么 BigDecimal 就是要走的路。
-
final将确保变量在初始化后不能被分配(即设置为一个值)。对于主要只是为了维护/可读性的局部变量;除此之外,它不会做任何事情。
标签: java floating-point double precision floating-accuracy