0

可能重复:
tan 45 给我 0.9999

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

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

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

0.9999999999999 repeating

为什么?

4

2 回答 2

1

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

于 2013-02-02T13:48:46.823 回答
1

为什么不?这是接近一。浮点运算永远不会精确。原因是 CPU 中的数字以二进制形式表示。
并且二进制浮点表示不能精确地表示例如 1/10。

只需阅读一些关于浮点编程的内容。

于 2013-02-02T13:49:00.673 回答