我一直以为它是双倍的,直到我意外地命中了floo + ESC并且它告诉我有一个floorl(< #long double#>)函数。那么 long double 是解决所有重大不准确问题的方法吗? ; - )
或者甚至还有比这更精确的东西?
答案 0 :(得分:3)
需要注意的一点是,long double
只是在iPhone硬件上充当double
。您不会从较大的类型获得任何额外的精度。它会在模拟器中为您提供更高的精度,因为您在那里运行Mac,这会让您感到困惑。
如前所述here(以及其他评论者),NSDecimal或NSDecimalNumber是获得精确度的方法(最多34位),使用它进行的计算是使用真十进制数学,而不是二进制浮点数完成的点。这可以避免您使用常规IEEE 754数学运算时看到的许多错误。
答案 1 :(得分:2)
我认为long double
是极限,但这实际上取决于你想做什么。你真的遇到了不准确的问题吗?
答案 2 :(得分:1)
为了更加精确,请查看NSDecimalNumber类。正如另一条评论所说 - 你发现任何不准确的问题。此外,准确度会更慢。
答案 3 :(得分:1)
添加更多精度是解决问题的一种方法,但有时(通常是?)真正的问题在于执行计算的方式。在这种情况下,我禁止使用健康剂量的RTFM。 FP算术的任何入门书都将涵盖为什么某些形式的方程式是灾难性的,以及如何避免遗忘的差距。