回 帖 发 新 帖 刷新版面

主题:sin()等三角函数问题

查了下书,发现是用弧度制的,有什么语句可以让计算机识别角度制的吗

回复列表 (共11个回复)

沙发

汗.难道你不会将角度换成弧度吗?
pi=3.1415926
180°= pi
不要告诉我你不知道将1°转化成pi / 180

板凳

但那个不精确吧,我要用循环里让角度加10度的,然后当>360度后再赋为0度,这样的话当到360度时实际上超不为准确的360度啊,当N次循环后,这个误差会越来越大的

3 楼

楼主,你自己定义的pi本身就存在误差。

4 楼

误差是难免的.
只是如何控制误差大小的问题.


没有最好,只有更好

5 楼

计算机都有误差,SIN的参数是DOUBLE的最高也就15位有效数字
你可以定义一个有15位有效的PI,,那么1/PI也就是15位有效,这样的话也达到了计算机的最高精度了
只要你不循环太多,应该能达到要求了吧
如果还有更高的要求,就不能用SIN了,要用专门的算法了。

6 楼

不知道你要干什么,如果能保证SIN的函数值只是和有理数(有效数字小于15)话你再多的循环也无所谓啊

7 楼

这个问题十分好处理!
多加一个变量,一切都解决了。
累计的时候使用角度,计算三角函数时使用弧度。

8 楼

另外,我记得,在计算机上三角函数的变量取值范围(定义域)(似乎?)是有限制的。
如果真如此,在度为单位的字变量转换前,不妨先mod以下。

9 楼

不要以为计算机语言能包罗万象。

10 楼

[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

我来回复

您尚未登录,请登录后再回复。点此登录或注册