2016-04-14 61 views
0

我已经实现了一个使用必须是确定性的模拟的锁步模型。对于确切的位置我使用浮动。现在我面临的问题是它们在每个硬件/操作系统上都不是确定性的。模拟依赖于向量数学,并且每个刻度都缩放几个向量,但也计算指数值。使用四舍五入来确定浮点运算

现在我很好奇,如果我将小数点后面的浮点数四舍五入来实现确定性,因为我只对每个浮点数应用5-10个操作。

+0

'对于确切位置我使用浮动'已经是一个矛盾的条款。 – EJP

+0

:)由此我的意思是不使用网格。 – Geosearchef

回答

1

首先使用double s会使近似误差进一步下降。然后四舍五入可能是足够确定的。

也使用strictfp这正是你打算做的。

+0

我认为strictfp将是一个可能的解决方案。我把这个关键字放在类和方法的前面,它们都不起作用。我仍然得到不同的结果,这取决于系统,这可能是由于我在Windows上运行了一个版本,另一个在Android上运行(它没有运行“默认”JVM)? – Geosearchef

+0

Android将JVM字节码转换为非JVM基础的Darvik。所以情况可能如此。使用BigDecimal可能不存在问题(性能)。 –

+0

那么使用strictfp它应该可以在Oracle JVM支持的所有系统上工作? – Geosearchef