解决方案
一切都一步完成,以避免舍入错误
如何避免舍入错误?这只是意味着舍入误差在单独的变量中不可用,仅此而已。
这 真的 pi 的值无法精确表示为浮点数,因此 pi / 2 的真实值也无法准确表示。所以你不能给 Math.cos
获得 0 所需的精确值。但是嘿 - 10-9 是一个 非常非常小 数字。这意味着如果你画一条 10,000 公里长的线,你最终会偏离相关轴 1 厘米。
这正是处理浮点数时应该预料到的事情。不要与平等进行比较——在一定的公差范围内进行比较。
其他提示
总会有四舍五入的错误。而且浮点在数学上并不是准确的,它仅准确地准确地达到了一定数量的重要数字。
更改您的代码,以便当您有1/1000000000的错误时不会“搞砸”。
对于我们大多数人在计算机上做严重的总和0 是 等于-3.20510345×10^-9的任何合理程度的准确性,您有权期望使用浮点数。这是一个经常涵盖的话题。
是的,您只是在此处丢失有关类型转换的数据。
弧度的90度不等于1.57079633。如果还有更多小数点的位置,那将按预期直接转换。
您将始终必须谨慎对待这样的事情。如上所述,10^-9足够接近零。
也取自 MSDN:
此外,由于双重类型的精度丧失,具有双重值的算术和分配操作的结果可能会略有不同。例如,分配字面双值的结果在.NET框架的32位和64位版本中可能有所不同。下面的示例说明了当字面值-4.4233060424772E -305和一个值为-4.423306042472E -305的变量时,此差异说明了这一差异。请注意,在这种情况下,解析方法(字符串)方法的结果不会损失精确度。
在计算机中,π/2弧度 不能 完全等于90度,因为π是无限长的数字。因此,除非计算机是∞-d,否则不能期望与π的完美主机。
我才发现:
-3.20510345×10-9与-0.00000000320510345相同,非常接近零。
Google转换为Radian是圆形的,这会导致错误。
我的猜测是,JavaScript因缺乏数字而臭名昭著的JavaScript也会产生不正确的radian,因此其cosign距离已经远了。
不知道我将如何解决这个问题 - 舍入是不可接受的,因为这对其他角度不起作用。