Solidity

如何在穩固性中使用小數

  • October 11, 2020

我如何計算:1083.83 / 8.25 = 131.37。

正如我所見,它不可能以簡單的方式。我嘗試了很多數學函式,但不起作用。

有什麼解決辦法嗎?

將程式碼中的每個非整數實體維護為一對分子和分母。

如果在任何地方都使用相同的分母(例如,在您的情況下為 100),那麼您可以只維護分子(例如,在您的情況下為 108383、825 和 13137)。

每當您應用算術計算時,請嘗試在計算結束時盡可能“推遲”操作/(或者div如果您正在使用某種SafeMath庫),以最大限度地減少精度損失。

例如,而不是:

uint256 a = xN  /  xD   +  yN  /  yD  ;
uint256 b = xN.div(xD).add(yN.div(yD));

你可以做:

uint256 a = (xN  *  yD   +  yN  *  xD )  / (xD  *  yD );
uint256 b =  xN.mul(yD).add(yN.mul(xD)).div(xD.mul(yD));

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