c – 在不同机器之间使用浮子双打时我应该知道什么?

c – 在不同机器之间使用浮子双打时我应该知道什么?,第1张

概述我听说不同CPU的浮点数/双打有很多问题. 如果我想制作一个使用花车进行一切的游戏,我怎么能确定每台机器上的浮点计算完全相同,这样我的模拟在每台机器上看起来都完全相同? 我还担心写/读文件或将浮点值发送/接收到不同的计算机.必须进行哪些转换,如果有的话? 我需要100%确定我的浮点值计算完全相同,因为即使计算中的细微差别也会导致完全不同的未来.这甚至可能吗? 标准C没有规定除范围约束之外的浮点类型 我听说不同cpu的浮点数/双打有很多问题.

如果我想制作一个使用花车进行一切的游戏,我怎么能确定每台机器上的浮点计算完全相同,这样我的模拟在每台机器上看起来都完全相同?

我还担心写/读文件或将浮点值发送/接收到不同的计算机.必须进行哪些转换,如果有的话?

我需要100%确定我的浮点值计算完全相同,因为即使计算中的细微差别也会导致完全不同的未来.这甚至可能吗?

解决方法 标准C没有规定除范围约束之外的浮点类型的任何细节,并且可能某些数学函数(如正弦和指数)必须在一定精度水平上正确.

除此之外,在这种普遍性水平上,你真的没有别的东西可以依赖!

也就是说,您很可能实际上不需要在每个平台上进行二进制相同的计算,并且浮点或双精度的精度和精度保证实际上足以用于仿真目的.

请注意,当您修改子表达式的评估顺序时,甚至无法在自己的程序中生成代数表达式的可靠结果,因此要求所需的可重复性类型可能有点不切实际.如果你需要真正的浮点精度和精度保证,你可能会更好地使用具有正确舍入的任意精度库,例如MPFR – 但这对于游戏来说似乎是不现实的.

序列化浮点数是一个完全不同的故事,你必须对目标平台使用的表示有所了解.如果所有平台实际上都使用32位或64位大小的IEEE 754浮点数,那么您可能只是直接交换二进制表示(模数字节式).如果您有其他平台,则必须考虑自己的序列化方案.

总结

以上是内存溢出为你收集整理的c – 在不同机器之间使用浮子/双打时我应该知道什么?全部内容,希望文章能够帮你解决c – 在不同机器之间使用浮子/双打时我应该知道什么?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1230923.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存