主题:sin()等三角函数问题
笑十三狼
[专家分:1040] 发布于 2008-02-01 15:55:00
查了下书,发现是用弧度制的,有什么语句可以让计算机识别角度制的吗
回复列表 (共11个回复)
沙发
btxdlibin [专家分:2430] 发布于 2008-02-01 17:01:00
汗.难道你不会将角度换成弧度吗?
pi=3.1415926
180°= pi
不要告诉我你不知道将1°转化成pi / 180
板凳
笑十三狼 [专家分:1040] 发布于 2008-02-01 17:41:00
但那个不精确吧,我要用循环里让角度加10度的,然后当>360度后再赋为0度,这样的话当到360度时实际上超不为准确的360度啊,当N次循环后,这个误差会越来越大的
3 楼
wdkshp [专家分:5490] 发布于 2008-02-02 12:47:00
楼主,你自己定义的pi本身就存在误差。
4 楼
btxdlibin [专家分:2430] 发布于 2008-02-03 12:32:00
误差是难免的.
只是如何控制误差大小的问题.
没有最好,只有更好
5 楼
iqapple [专家分:20] 发布于 2008-02-03 12:45:00
计算机都有误差,SIN的参数是DOUBLE的最高也就15位有效数字
你可以定义一个有15位有效的PI,,那么1/PI也就是15位有效,这样的话也达到了计算机的最高精度了
只要你不循环太多,应该能达到要求了吧
如果还有更高的要求,就不能用SIN了,要用专门的算法了。
6 楼
iqapple [专家分:20] 发布于 2008-02-03 12:50:00
不知道你要干什么,如果能保证SIN的函数值只是和有理数(有效数字小于15)话你再多的循环也无所谓啊
7 楼
老大徒伤悲 [专家分:29120] 发布于 2008-02-13 12:25:00
这个问题十分好处理!
多加一个变量,一切都解决了。
累计的时候使用角度,计算三角函数时使用弧度。
8 楼
老大徒伤悲 [专家分:29120] 发布于 2008-02-14 11:31:00
另外,我记得,在计算机上三角函数的变量取值范围(定义域)(似乎?)是有限制的。
如果真如此,在度为单位的字变量转换前,不妨先mod以下。
9 楼
zhang5382 [专家分:170] 发布于 2008-02-18 11:06:00
不要以为计算机语言能包罗万象。
10 楼
老大徒伤悲 [专家分:29120] 发布于 2008-02-18 11:25:00
[quote]我要用循环里让角度加10度的,然后当>360度后再赋为0度[/quote]我理解是减去360度[quote]不要以为计算机语言能包罗万象。[/quote]我以为,真的是无所不能,关键在“外设”,而不在程序。
上面的问题我就写一个函数看看。
Private Function Sin_Degree(Degree As Double) As Double
Dim Radian As Double
Radian = (Degree Mod 360) / 180 * 3.14159265358979
Sin_Degree = Sin(Radian)
End Function
我来回复