我知道双重数学可以有一个.000000000000001误差裕度,通过乘法使误差范围变大,这会使这种情况变得更糟。话虽如此,是否有可能将每一次计算算出一个重要数字(可能是小数点4位),以实现所有平台之间的一致性?它是简单地更有效地使用十进制数学,还是十进制数学需要类似的四舍五入?
我将使用这个为我的锁步RTS游戏,这需要一个确定性的物理引擎同步多人游戏。我在用C#。我希望执行的一些计算和计算包括System.Math库的Sqrt、Sin和Pow。
发布于 2015-04-02 21:02:57
实际上,我一直在错误地考虑这件事。与其尝试以更高的准确性(和更多的开销)最小化错误,我应该只使用一种确定性存储和操作的类型。我在这里使用了答案:Fixed point math in c#?,它帮助我创建了一个完美而高效的定点类型。
https://stackoverflow.com/questions/28425332
复制相似问题