
js 小于 1 的数字,精度超过 6 位会自动转成科学计数法表示,如 0.0000001 ,会自动转成 1e-7 。
现在可以通过 1e-7.toFixed(7) 方法转成字符串,得到 '0.0000001'。
问题是能否用数字形式表示 0.0000001 ,而非科学计数法?
其他语言也有这个问题嘛?
1 registerrr 2022 年 1 月 10 日 很多语言里有 printf ,可以满足你的要求 |
2 leebs OP @registerrr 这个输出还是字符串吧,能否输出数字呢。 |
3 marcong95 2022 年 1 月 10 日 不能,因为小数在内存里本身就是有以科学计数法保存的。详见 IEEE 754 ,你以为的 1e-7 其实是 0.0000000999999999999999954748111825886258685613938723690807819366455078125 执行 (1e-7).toFixed(100).replace(/\.?0+$/, '') 可得 IEEE 754 相关话题感觉都成月经贴了 |
4 thinkershare 2022 年 1 月 10 日 你要先搞清楚, 你看得到的都是字符串, 没有数字, 数字层面只要 0101001, 至于你要怎么解释, 是数据类型的事情, 你看到的打印的都是各种 toString()格式化决定的, JS 使用的是 IEEE 754, 这个规范的 ToString 在小数位无效的时候, 大部分语言都选择使用科学计数法来作为字符串格式化形式, 即只有 6,7 位的有效位, 其它有效位是无效的, 因为表示整数的部分位数不够多, 精度不够 |