Solidity

如何處理solidity中的精度錯誤?

  • November 19, 2020

假設我有一些劃分,結果是答案不一。

我已將其乘以 10^18 以給出小數,但問題仍然是 1。

我如何停止重複此計算而將其大量丟棄?

例如,如果使用者呼叫該函式 10,000 次,則答案不再偏離 1,而是現在偏離了 10,000。

處理這個問題的最佳方法是什麼?

可以這樣做並對不精確進行硬編碼嗎?

myVariable -= foo + 1

這真的取決於上下文。

對於許多操作,例如令牌交換,舍入誤差1 x 10^(-18)可能是可以的。支付更多的交易費用。

一些隨著時間的推移累積錯誤的合約,如 MakerDao,使用更多的數字。在這些情況下,我建議仔細研究舍入誤差隨時間的影響。您會更喜歡這樣的解決方案,從長遠來看,更正可以消除錯誤。

引用自:https://ethereum.stackexchange.com/questions/90308