如何获得分数在特定基数中的表示(在 GP shell 中)?
How to obtain the representation of a fraction in a particular base (in GP shell)?
如何获取特定基数中任意分数的表示?比如1/3以2为底的表示应该是
[[0], [0, 1, 0, 1, 0, 1, ...]
但是当我在 GP shell 中键入 digits(1/3, 2)
并按 Enter 时,我看到的只是以下错误:
? digits(1/3, 2)
*** at top-level: digits(1/3,2)
*** ^-------------
*** digits: incorrect type in digits (t_FRAC).
如何解决问题?
值 1/3 是 1/3 并且没有底数。如果你想以某种精度输出它,你可以乘以 base^precision:
digits(floor(1/3 * 2^50), 2)
已编辑:
更完整的解决方案:
Vec(digits(floor(frac(1/3) * 2^50), 2), -50)
以上只涉及小数部分。整数部分可以用(1/3)
得到。在这种情况下,小数位数为 50,并且出现了两次。这可以打包为一个函数:
fracdigits(f,b,n)=[digits(f, b), Vec(digits(floor(frac(f) * b^n), b), -n)]
fracdigits(1/3, 2, 50)
fracdigits(1/8, 2, 50)
如何获取特定基数中任意分数的表示?比如1/3以2为底的表示应该是
[[0], [0, 1, 0, 1, 0, 1, ...]
但是当我在 GP shell 中键入 digits(1/3, 2)
并按 Enter 时,我看到的只是以下错误:
? digits(1/3, 2)
*** at top-level: digits(1/3,2)
*** ^-------------
*** digits: incorrect type in digits (t_FRAC).
如何解决问题?
值 1/3 是 1/3 并且没有底数。如果你想以某种精度输出它,你可以乘以 base^precision:
digits(floor(1/3 * 2^50), 2)
已编辑: 更完整的解决方案:
Vec(digits(floor(frac(1/3) * 2^50), 2), -50)
以上只涉及小数部分。整数部分可以用(1/3)
得到。在这种情况下,小数位数为 50,并且出现了两次。这可以打包为一个函数:
fracdigits(f,b,n)=[digits(f, b), Vec(digits(floor(frac(f) * b^n), b), -n)]
fracdigits(1/3, 2, 50)
fracdigits(1/8, 2, 50)