5
|
angularsen Bcelik · 技术社区 · 14 年前 |
1
7
我找不到支持此操作的参考,但我认为原因如下:
另一方面,测试float或double
|
2
9
亨克完全正确。只是为了增加一点。 这里所发生的是,如果编译器生成的代码能使浮点运算保持在“芯片上”,那么它们就可以以更高的精度完成。如果编译器生成的代码每隔一段时间将结果移回堆栈,那么每次这样做时,额外的预处理就会丢失。 编译器是否选择生成更高精度的代码取决于各种未指定的详细信息:是否编译了debug或retail、是否在调试器中运行、浮动是否在变量或常量中、特定机器的芯片体系结构有,等等。 基本上,你可以保证32位或更好的精度,但你永远无法预测你是否会得到更好的32位精度。因此,您不需要依赖于32位精度,因为这不是我们给您的保证。有时我们会做得更好,有时不会,如果你有时免费得到更好的结果,不要抱怨。 亨克说他找不到这方面的参考资料。C规范第4.1.6节规定:
至于你应该做什么:首先,总是用双打。没有任何理由使用浮点运算。使用浮点数 存储 如果你想;如果你有一百万个,并且想使用400万字节而不是800万字节,那么这是浮点的合理用法。但是floats在运行时会让你付出代价,因为芯片被优化为可以做64位的数学运算,而不是32位的数学运算。 第二,不要依赖于精确或可重复的浮点结果。条件的微小变化会导致结果的微小变化。 |
Robert King · Unity C#语法问题-转换位置 1 年前 |
JBryanB · 如何从基本抽象类访问类属性 1 年前 |
law · 检查答案按钮的输入字符串格式不正确 2 年前 |
i_sniff_ket · 在unity之外使用unity类 2 年前 |