标准库 sin 之错

Posted on December 19, 2023

标准库 sin()

在 C 语言里,有一个计算三角函数的函数, sin() , 其定义为 double sin(double)

由于 sin 的结果大概率为无理数,所以使用 浮点数为参数也未尝不可。

但,我要说但是了。

在工业界,不管是土木工程还是机械制造,我们都倾向于使用“角度”而不是”弧度“。

转换一下很困难?

如果所有的程序都在干角度转弧度这件事,那只能说明库错了。库逼迫大家用弧度,而实际上大家用角度。

看下 180/pi 这个常数的定义这各大软件里有多普遍。就知道实际上大家都这用角度存储。只是这需要 sin 值的时候再转弧度调用 sin。 因为 sin 本身是一个开销很大的操作,所以很多程序员只是觉得多了一个乘法,并没有意识到 sin 的接口定义错了。

为何应该用角度?

因为常用角度是整数。在计算机里,弧度无法精确的表达90度,45度,30度,和60度。这都是最常用的角度。 而无法精确表达就要取近似。取近似就要丢精度。

而精度误差是可以累积的。

Comments