javascript - 如何在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)
解决方案
在 JavaScript 中,Number
是一个双精度浮点数。
它的精度不能用小数位表示,它根据数字的大小而变化。例如,上面Number.MAX_SAFE_INTEGER
的精度是“小于 0 位小数”:
const large = 9007199254740992;
const larger = large + 1;
console.log(large === larger);
要将 a 转换Number
为String
具有固定小数位数的 a,请使用.toFixed()
,正如@epascarello 建议的那样:
const input = 3;
const str = input.toFixed(8);
console.log(str);
至于进行财务计算,有人说您永远不应该使用 IEEE 754 浮点数(例如 JavaScript 的Number
s),尽管许多最大的财务公司就是这样做的。
为了安全起见,请使用bignum库,例如big.js。
推荐阅读
- python - 熊猫数据框为总计创建带有水平边框的html表格
- android - Android Listview 删除复选框 Kotlin
- javascript - Node JS 和 JIMP:没有匹配的构造函数重载
- xml - 如何使用 XSLT 替换 XML 中的前缀和命名空间
- c - 如何修复“可变大小的对象可能未初始化”?
- jdbc - Spark - 尝试写入 Redshift 时出现只读错误
- azure-devops - Azure DevOps - 在测试结果发布后发送电子邮件通知
- json - Azure 数据工厂在动态内容字段中添加具有 JSONPath 表达式值的逻辑运算符
- java - 由于 groovy.lang.MissingPropertyException,Gradle 同步失败
- python - 初学者 Python 股票筛选器