Vyper

vyper(和solidity)中的Uint256部門

  • January 21, 2019

如此處所述,solidity 不支持浮點除法:如何在solidity 中執行浮點型除法?

我想將兩個 uint256 數字相除並將它們保存為小數,保留 10 個小數位的精度。我是否需要先將這些數字乘以 10000000000,然後將它們相除,然後保存小數,然後再將小數除以 10000000000?

如果您有兩個 uint a 和 b,並且您希望將 a 除以 b -> a/b10 位小數,那麼您可以執行以下操作

uint aScaled = a * 10**10;
uint divScaled = a / b;            // b is not scaled!

uint decN    = divScaled / 10**10;
uint decFrac = divScaled % 10**10

例子

a = 3; b = 2;
aScaled   = 3 * 10000000000;           // = 30000000000
divScaled = 30000000000 / 2;           // = 15000000000
decN      = 15000000000 / 10000000000; // = 1
decFrac   = 15000000000 mod 1000000000;// = 5000000000

我會保持數字按 10**10 縮放,並在 UI 中僅將其顯示為小數。

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