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

guolin 2011-06-17 04:48:16
在调用Math类的sin方法想计算角度的三角函数,结果结果不对,一查文档才发现参数传入的是弧度,如果是通过公式来把角度转换成弧度,算出来的结果就会有偏差,例如sin 30我想让它的结果是0.5,这个应该怎么办呢?
...全文
1573 点赞 收藏 8
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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) 方法转换呢?
回复
相关推荐
发帖
Java SE
创建于2007-09-28

6.1w+

社区成员

Java 2 Standard Edition
申请成为版主
帖子事件
创建了帖子
2011-06-17 04:48
社区公告
暂无公告