我有这个java代码来计算sin(360):
if(re.equals(" sin "))
{
try{
String next=data.get(i+1);
v1 = Double.parseDouble(next);
double degreess = v1;
double radianss = Math.toRadians(degreess);
BigDecimal bDecimal1 = new BigDecimal(
Math.sin(radianss), MathContext.DECIMAL32);
re=""+bDecimal1;
//re=""+Math.sin(Math.toRadians(Double.valueOf(next)));
i++;
}
catch (Exception e) {
e.printStackTrace();
}
}
我预计sin(360)
应该正好是 0。
但我的结果不为零:-0.0000000000000002449294
。为什么这不为零?
最佳答案
处理浮点值时,应该使用 abs(sin360 - 0) < delta
(其中 delta 非常小,如 0.0000001)而不是 sin360 == 0
。这是浮点内部表示问题。
What Every Computer Scientist Should Know About Floating-Point Arithmetic
关于java - 360 度的正弦值非零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15272377/