【发布时间】:2012-04-04 14:16:51
【问题描述】:
我想知道为什么 OpenGL 在其函数中使用 float 而不是 double。 Double 应该比 float 准确得多。
【问题讨论】:
-
现有硬件的显着份额仍然根本不支持双精度。现在考虑 OpenGL 已经存在了 20 年......而且,直到 2-3 年前,至少有一家主要的显卡制造商甚至不支持 32 位浮点精度。事实上,没有人注意到其中的区别。
-
没错,你怎么能注意到差异。连你的银行账户都看不出来,如果它是浮动的,你怎么能用肉眼注意到图片的差异
-
此外,大多数情况下,当人们想要使用
double而不是float时,他们在做一些根本错误的事情(例如使用双精度,因为人们想要在行星尺度上渲染)。 -
@EricYin:你银行账户里的钱是一个很好的“做错事”的例子。这不是你会使用
float或double的东西(尽管假设这是一个常见的初学者错误)。只有定点,没有什么不同。浮点数学原则上无法准确地表示某些数字,或者对它们进行精确的数学运算。虽然您不会注意到您的帐户有 1/1000 美分的错误,但银行会注意到 5000 万客户的情况,或者在一个月内进行 10 亿次交易之后。 -
@EricYin:如果你的银行账户使用浮动,他们的程序员应该被解雇,银行应该为了更大的利益而关闭。浮点数不适合财务计算。你必须在那里使用 bignums。
标签: opengl