【发布时间】:2021-09-09 21:09:38
【问题描述】:
我有代码:
(i as f64).powf(2.0 / 5.0).floor() as u64
有没有一种方法可以在不使用浮点的情况下将整数提高到分数幂?
(我可以执行两个单独的整数幂运算。它会溢出或丢失很多精度,具体取决于顺序。)
【问题讨论】:
-
除了最终结果不能以整数表示的情况外,您预计在什么情况下会丢失精度?
-
如果我做了
i.pow(1/5).pow(2),那么i.pow(1.5)将是一个整数,因此会在被提升到五次方之前向下舍入。 -
但是
i的什么值会使i^(2/5)成为整数,而i^(1/5)不会成为整数? -
我想有效地应用
.floor()在功率计算之后。i是任何整数,而不仅仅是整数的五次方根。 -
在这种情况下,我怀疑你会找到任何东西。除了调整奇异的数据结构和算法之外,截断期望并不是一种广泛需要的操作,其中 FP 的有限速度/不精确性对于理论保证并不重要。