2014-02-21 16 views
0

我目前正致力於重新編寫原先用VB6編寫的舊開票程序。
它有兩個部分,一個在Android平板電腦上,另一個在電腦上。使用舊的數據庫,存儲派生值,因爲如果重複計算會有不正確的結果。 例如,如果一個人以10%的折扣和23%的稅率出售價格爲10歐元的5件物品,它將存儲上述4個值,而且還存儲(5 *(10 * 1.23))* 0.9。
我真的不喜歡在我的數據庫中有重複或派生的信息,但實際的銷售價值必須相同,無論是在平板電腦上還是在PC上查看。
所以我的問題是,有沒有機會(即使是最輕微的一個)上述calcalation(至小數點後三位)在不同的操作系統(如android設備和臺式機)上會有不同的結果?
在此先感謝您提供的任何幫助兩個完全相同的計算有多大可能會得出不同的結果?

回答

0

是的,這是可能的。浮點運算總是受四捨五入誤差的影響,不同的語言(和體系結構)以不同的方式處理這些錯誤。在處理這些問題方面有最佳做法,儘管我認爲自己沒有足夠的知識來與他們交談。但這裏有幾個選項適合你。

  1. 使用用於浮點運算的數據類型。例如,VB6具有單點和雙點類型以用於浮點,但也具有用於精確十進制數學的貨幣類型。
  2. 將浮點值縮放爲整數並對這些整數值執行計算。您甚至可以將結果作爲整數存儲在數據庫中。我們使用的ERP系統執行此操作,幷包含一個數據字典,用於定義每種類型的縮放比例,以便在顯示之前將其「縮放」。

希望有所幫助。

相關問題