Java tan函数未按预期工作

时间:2013-02-02 13:46:26

标签: java math trigonometry

  

可能重复:
  tan 45 gives me 0.9999

当我使用tan时,我得到一个很长的答案:

double degrees = 45.0;
double radians = Math.toRadians(degrees);
System.out.println(Math.tan(radians));

当我运行此代码时,我得到:

0.9999999999999 repeating

为什么?

2 个答案:

答案 0 :(得分:1)

因为双打(或实际上系统下属翻倍,IEEE754)并不完美。使用双打和浮点数时(使用任何语言,而不仅仅是Java),请始终注意这一点。

答案 1 :(得分:1)

为什么不呢?这几乎是一个。浮点运算永远不会完全。 原因是CPU中的数字以二进制形式表示 并且二进制的fosoating点表示不能完全代表例如1/10。

稍等一下浮点编程。