如何让php cos函数返回正确的值?

Kee*_*ood 5 php floating-point trigonometry

我试过了

$x = cos(deg2rad($angle));
Run Code Online (Sandbox Code Playgroud)

但是当角度为90度而不是0时,它返回6.12323399574E-17.我读到这是一个浮点问题,但是有解决方法吗?

Aln*_*tak 10

6.1E-17 无论如何几乎为零[*].如果您需要将结果实际比较为零,则在浮点数学中,您应检查它是否在所需值的某个容差范围内,因为大多数数字无法正确表示.

$x = cos(deg2rad($angle));
$is_zero = (abs($x) < 1e-10);
Run Code Online (Sandbox Code Playgroud)

当然,严格地说,零实际上是一个可以在浮点中正确表示的数字.真正的问题是pi / 2.0不可能,因此您的cos功能输入不是"正确的".

[*]把它放在上下文中,取其比例为1 AU(从太阳到地球的平均距离),相当于0.0092 毫米,约为人类头发平均宽度十分之一 ......