toFixed 函数未按预期提供输出

Aad*_*rsh 0 javascript rounding tofixed

为什么toFixed()在以下情况下不能按预期工作?解决办法是什么?

代码:

var num = 5.56789;
var n = num.toFixed(16);
console.log(num)
console.log(n)
Run Code Online (Sandbox Code Playgroud)

n 的期望值: 5.5678900000000000

n 的实际值: 5.5678900000000002

笔记:

  1. 我已经完成了所有相关的堆栈溢出问题。
  2. 我知道它没有给出预期的结果,因为浮点数不能用二进制完美表示。
  3. 我期待的是一个库函数,它实际上承认上述内容并生成预期的输出。

Fra*_*sis 5

您几乎已经回答了自己的问题,javascript Number 类是一个 64 位浮点值,您所谈论的数字超出了给定 64 位所允许的精度。为了解决这个限制,像https://github.com/munrocket/double.js这样的库可以让你达到 128 位的精度。