PyR*_*lez 5 language-agnostic binary haskell fractions
现在,浮点数和双精度数,虽然它们可以近似任何类型的数字(虽然可以说是整数,浮点数更精确),但它们在内部表示为二进制小数.例如,十分之一是近似的
0.00011001100110011... (... only goes to computers precision, not infinity)
Run Code Online (Sandbox Code Playgroud)
现在,任何带有限位的二进制数都称为dyadic fraction数学中的表示(与p-adic无关).这意味着你将它表示为分数,其中分母是2的幂.例如,假设我们的计算机接近十分之一为0.00011.对于它的二元分数是3/32或3/(2^5)接近十分之一.现在我的技术问题.从浮点数中提取二元分数的最简单方法是什么?
不相关注意:如果你想知道我为什么要这样做,那是因为我在Haskell中创建了一个超现实的数字库.二元分数很容易转换为超现实数,这就是为什么方便二进制很容易翻译成二元数的原因(尽管如此,我肯定会遇到有理数的问题.)
该decodeFloat功能似乎对此有用.从技术上讲,你也应该检查floatRadix是2,但到目前为止我可以看到GHC总是如此.
请注意,因为它不会简化尾数和指数.在这里,如果我评估decodeFloat (1.0 :: Double)我得到-52的指数和2 ^ 52的尾数,这不是我的预期.
而且,toRational似乎产生了二元分数.不过,我不确定情况总是如此.
| 归档时间: |
|
| 查看次数: |
249 次 |
| 最近记录: |