首页 > 解决方案 > 如何在javascript中将数字转换为小数点后8位的浮点数

问题描述

如何将一个数字(来自我的测试用例的输入(无论是整数还是浮点数)转换为始终具有 8 个小数位的浮点数/字符串数?例如,如果我的输入是 3,那么我应该转换为 '3.00000000',如果我的输入是 53.678,那么我应该转换为 '53.67800000'。我用谷歌搜索并尝试了一些转换类型,如解析、toPrecision(),但无法转换。任何帮助深表感谢。

expect(a).to.equal(b) // a and be should be of same number with types too
expect(a).to.equal(b)

标签: javascriptnode.jsecmascript-6chai

解决方案


在 JavaScript 中,Number 一个双精度浮点数。
它的精度不能用小数位表示,它根据数字的大小而变化。例如,上面Number.MAX_SAFE_INTEGER的精度是“小于 0 位小数”:

const large = 9007199254740992;
const larger = large + 1;
console.log(large === larger);

要将 a 转换NumberString具有固定小数位数的 a,请使用.toFixed(),正如@epascarello 建议的那样:

const input = 3;
const str = input.toFixed(8);
console.log(str);

至于进行财务计算,有人说您永远不应该使用 IEEE 754 浮点数(例如 JavaScript 的Numbers),尽管许多最大的财务公司就是这样做的。
为了安全起见,请使用bignum库,例如big.js


推荐阅读