2016-04-14 62 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