为什么 (73).toString(36)
返回 21
而 (0.73).toString(36)
返回 0。 qa2voha2volfpsnhmyhqia4i
而不是 0.21?
最佳答案
这是因为 float 存储为二进制分数(数字除以 2 的幂),而 73/100 不能表示为二进制中的非重复分数。因此,在内部,它存储的值接近为 0.73,但并不完全相等。这就是为什么你在 toString() 方法中得到如此多的数字。
73/100 也不能表示为以 36 为基数的非重复分数。一般来说,对于分数 a/b,您只能在给定基数 x 中获得小数点后固定位数,如果对于某些整数 c 和 n,您可以将 a/b 简化为 c/(x^n) 形式。
关于Javascript Number.toString(基数) 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28465823/