Java使用Math类计算三角函数的问题

guolin
博客专家认证
2011-06-17 04:48:16
在调用Math类的sin方法想计算角度的三角函数,结果结果不对,一查文档才发现参数传入的是弧度,如果是通过公式来把角度转换成弧度,算出来的结果就会有偏差,例如sin 30我想让它的结果是0.5,这个应该怎么办呢?
...全文
2058 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
smart_leizi 2013-05-04
  • 打赏
  • 举报
回复
double sin30 = Math.round(Math.sin(30*Math.PI/180)*100); System.out.println("sin30="+sin30/100);
huntor 2011-06-17
  • 打赏
  • 举报
回复
计算机浮点数计算就这德性,不会有精确结果
zqfddqr 2011-06-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 sinyu890807 的回复:]
引用楼主 sinyu890807 的回复:
在调用Math类的sin方法想计算角度的三角函数,结果结果不对,一查文档才发现参数传入的是弧度,如果是通过公式来把角度转换成弧度,算出来的结果就会有偏差,例如sin 30我想让它的结果是0.5,这个应该怎么办呢?


这个方法和用公式换算的结果一样,还是没法获得精确的值啊。
Math.sin(Math.toRadians(30))
结果是0.……
[/Quote]自己四舍五入一下
chenchenyangll 2011-06-17
  • 打赏
  • 举报
回复
Java就这样
albertshaw 2011-06-17
  • 打赏
  • 举报
回复

public static double toRadians(double angdeg) {
return angdeg / 180.0 * PI;
}
//toRadians是这样实现的,而 PI值如下
public static final double PI = 3.14159265358979323846;
//当然没法精确了,我找不到用Math能解决的方法.
guolin 2011-06-17
  • 打赏
  • 举报
回复
[Quote=引用楼主 sinyu890807 的回复:]
在调用Math类的sin方法想计算角度的三角函数,结果结果不对,一查文档才发现参数传入的是弧度,如果是通过公式来把角度转换成弧度,算出来的结果就会有偏差,例如sin 30我想让它的结果是0.5,这个应该怎么办呢?
[/Quote]

这个方法和用公式换算的结果一样,还是没法获得精确的值啊。
Math.sin(Math.toRadians(30))
结果是0.49999999999999994,而达不到0.5啊
sessinsong 2011-06-17
  • 打赏
  • 举报
回复
楼上正解 !
龙四 2011-06-17
  • 打赏
  • 举报
回复
如果直接用Math的toRadians(double angdeg) 方法转换呢?

62,614

社区成员

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

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