当前位置: 代码迷 >> Java相关 >> 数学问题
  详细解决方案

数学问题

热度:389   发布时间:2007-03-14 19:06:14.0
数学问题
我想求一个数的sin值,但是不知道为什么不正确
class TestPI
{
public static void main(String args[])
{
System.out.println(Math.sin(2*Math.PI));
}
}

答案是 -2.44929.......E -16 为什么不是0呢?
搜索更多相关的解决方案: 数学  

----------------解决方案--------------------------------------------------------

确实不知道是怎么回事!


----------------解决方案--------------------------------------------------------

各位大侠,尽力帮帮忙想一想吧


----------------解决方案--------------------------------------------------------
Math.PI/2好似正确.
----------------解决方案--------------------------------------------------------
这个,应该是误差。
计算机里面的浮点数(double,float之类)是不可能完全精确表示的,存在一些小误差也是正常的。
----------------解决方案--------------------------------------------------------
Math.PI是接近园的周长和直径之比的 ,并不是确定的,另这有一定的误差,

----------------解决方案--------------------------------------------------------
大概就是这个原因了.
----------------解决方案--------------------------------------------------------
但是呢,如果是2*Math.PI的话答案却是正确的
class TestPI
{
public static void main(String args[])
{
System.out.println(2*Math.PI);
}
}
那样可能问题出在Math.sin()的函数那里了,就算是误差的话也不会多了-2.44929.......这么夸张~~~???太概也要接近0吧~~
----------------解决方案--------------------------------------------------------
这个数是很接近0
----------------解决方案--------------------------------------------------------

后面不是有个10 的负16次方么;
误差也应该是Math.PI 引入的,PI是double 类型的,而不是Math.sin()造成的.
我觉得.


----------------解决方案--------------------------------------------------------
  相关解决方案