sin(PI) 的问题

wanglifeng595 2014-09-04 09:56:44

System.out.println( Math.sin(Math.PI) );

各位网友,为何这输出的结果不是0呢?
...全文
431 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
anakin_feng 2014-09-05
  • 打赏
  • 举报
回复
引用 9 楼 wanglifeng595 的回复:
[quote=引用 8 楼 magi1201 的回复:] [quote=引用 7 楼 wanglifeng595 的回复:] sin(Math.pi/2)结果就近似于真值1
java中PI 本来就是近似值,然后再近似计算,计算出来的值再近似为double 为1 应该就这么出来了[/quote] 是的,这就是我的问题了,sin(PI/2)、sin(PI/6)或者其它情况时,都近似于真值。唯独,sin(pi)调用时,并非近似于0,而是大于1的数[/quote]不是啊,答案不是1.2246467991473532E-16吗,这不是一个很小的数吗
wanglifeng595 2014-09-04
  • 打赏
  • 举报
回复
引用 8 楼 magi1201 的回复:
[quote=引用 7 楼 wanglifeng595 的回复:] sin(Math.pi/2)结果就近似于真值1
java中PI 本来就是近似值,然后再近似计算,计算出来的值再近似为double 为1 应该就这么出来了[/quote] 是的,这就是我的问题了,sin(PI/2)、sin(PI/6)或者其它情况时,都近似于真值。唯独,sin(pi)调用时,并非近似于0,而是大于1的数
姜小白- 2014-09-04
  • 打赏
  • 举报
回复
引用 7 楼 wanglifeng595 的回复:
sin(Math.pi/2)结果就近似于真值1
java中PI 本来就是近似值,然后再近似计算,计算出来的值再近似为double 为1 应该就这么出来了
wanglifeng595 2014-09-04
  • 打赏
  • 举报
回复
引用 5 楼 wanglifeng595 的回复:
[quote=引用 1 楼 Molly_1994 的回复:] 因为Java中的PI不是实际中完全的PI,java的PI是这样定义的public static final double PI = 3.14159265358979323846;
我也知道,它只是个近似值。所以,sin和cos函数中,使用它时,如sin(Math.pi/2)结果就近似于真值1/2,其它函数调用都没问题。但是,sin(PI)时例外,输出结果并非接近于0,而是大于1的数,[/quote] sin(Math.pi/2)结果就近似于真值1
wanglifeng595 2014-09-04
  • 打赏
  • 举报
回复
引用 2 楼 magi1201 的回复:
sin(π) = 0 java中的Math.PI 比任何其他值都更接近 pi(即圆的周长与直径之比)的 double 值 它不是π 值,只是它的近似值,所以 Math.sin(Math.PI) 不等于 0
是的,它只是个近似值。所以,sin和cos函数中,使用它时,如sin(Math.pi/2)结果就近似于真值1/2,其它函数调用都没问题。但是,sin(PI)时例外,输出结果并非接近于0,而是大于1的数哦,让我很是纳闷啊
wanglifeng595 2014-09-04
  • 打赏
  • 举报
回复
引用 1 楼 Molly_1994 的回复:
因为Java中的PI不是实际中完全的PI,java的PI是这样定义的public static final double PI = 3.14159265358979323846;
我也知道,它只是个近似值。所以,sin和cos函数中,使用它时,如sin(Math.pi/2)结果就近似于真值1/2,其它函数调用都没问题。但是,sin(PI)时例外,输出结果并非接近于0,而是大于1的数,
姜小白- 2014-09-04
  • 打赏
  • 举报
回复
引用 3 楼 Molly_1994 的回复:
[quote=引用 2 楼 magi1201 的回复:] sin(π) = 0 java中的Math.PI 比任何其他值都更接近 pi(即圆的周长与直径之比)的 double 值 它不是π 值,只是它的近似值,所以 Math.sin(Math.PI) 不等于 0
你是说Java中Math里的PI很真实[/quote] sin(π) 这个π 是数学中的π,Math中的PI 是近似值
anakin_feng 2014-09-04
  • 打赏
  • 举报
回复
引用 2 楼 magi1201 的回复:
sin(π) = 0 java中的Math.PI 比任何其他值都更接近 pi(即圆的周长与直径之比)的 double 值 它不是π 值,只是它的近似值,所以 Math.sin(Math.PI) 不等于 0
你是说Java中Math里的PI很真实
姜小白- 2014-09-04
  • 打赏
  • 举报
回复
sin(π) = 0 java中的Math.PI 比任何其他值都更接近 pi(即圆的周长与直径之比)的 double 值 它不是π 值,只是它的近似值,所以 Math.sin(Math.PI) 不等于 0
anakin_feng 2014-09-04
  • 打赏
  • 举报
回复
因为Java中的PI不是实际中完全的PI,java的PI是这样定义的public static final double PI = 3.14159265358979323846;

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧