Solidity
如何在穩固性中使用小數
我如何計算: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));