如何在 substrate runtime 中进行浮点运算

How to do floating point arithmetic in substrate runtime

如何在 substrate runtime 中对浮点值进行数学运算。作为一个简单的例子,假设我想跟踪去中心化金融中的利率。

我可以使用百分比作为整数来制作原型

let rate = 2;
let dividend = capital * rate / 100;

但是如果我的利率是 2.5% 或 2.4554% 怎么办?

有没有标准的方法来进行浮点运算?

由于 Substrate 是区块链的框架,因此每个节点到达相同的确定性结果以达成共识很重要。

浮点运算不是确定性的,因此在 Substrate 中是不允许的。

处理需要小数位的算术的标准方法是使用 in-built 基本类型之一来处理 不动点 算术。定点运算对于 Substrate 来说是安全的,因为它将所有有理数表示为分数,并且始终解析为确定性结果。

用于处理定点运算的两种类型是 Permill and the Perbill 类型。