1
首先,在數據庫表中的列是與DECIMAL
的10,4
的長度。Ruby on Rails的 - 的BigDecimal計算錯誤
如果我這樣做是在控制檯上,甚至在控制器,結果是正確的:
rate = (1/0.7126) * 1.0883
,但如果我這樣做,這是行不通的:
rate = (1/from_rate) * to_rate
結果簡直就是to_rate
的價值。
from_rate
和to_rate
是數據庫查詢的結果和值是正確的,如果我登錄使用.class
結果是BigDecimal
類的,所以我不知道爲什麼按預期這一計算不工作。
我試過明確轉換使用to_d
和BigDecimal.new
但他們似乎沒有什麼區別。
有趣的問題......它看起來像整數除法方法輸出一個整數當參數是BigDecimal?適用於Float,但不適用於BigDecimal?試試這個...'rate =(1.0/from_rate)* to_rate' ...它可能是浮點除法方法來處理它。 – SteveTurczyn
謝謝@SteveTurczyn,我的意思是在發佈之前嘗試類似的東西。它恐怕不起作用,結果也是一樣。我能想到的唯一解決方法是將費率乘以1,000以使它們成爲整數,但我寧願不這樣做。 – martincarlin87
如果你做'(1/from_rate)',控制器的結果是什麼?那是返回'1'整數嗎?如果使用'from_rate.to_f'或'(0 + from_rate)',會發生什麼?我想確認,該司部分返回1,看看如果這是有關的格式'from_rate' – SteveTurczyn