【问题标题】:how to convert a number to float with 8 point decimal places in javascript如何在javascript中将数字转换为小数点后8位的浮点数
【发布时间】:2019-03-15 22:03:47
【问题描述】:

如何将一个数字(来自我的测试用例的输入(无论是整数还是浮点数)转换为始终有 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)

【问题讨论】:

  • 数字不能有尾随零。您可以使用 toFixed() 将其转换为字符串....
  • @epascarello,我期待同样的事情并且能够继续。非常感谢您的快速回复。正如您在评论中回答的那样,我怎样才能接受您的评论作为已接受的答案?
  • 他没有发布答案,你不能接受。
  • 具有特定小数点的数字通常只对输出很重要。您不应该在内部计算中使用它们。
  • 这里的“内部计算”是什么意思?因为我必须处理所有小数点后 8 位的算术计算,因为我的应用程序是基于加密货币的。所有处理比特币、以太币等加密货币的订购/交易也涉及购买金额费用等。如果您有任何建议,我愿意接受。

标签: javascript node.js ecmascript-6 chai


【解决方案1】:

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

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

要将Number 转换为具有固定小数位数的String,请按照@epascarello 的建议使用.toFixed()

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

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

【讨论】:

    猜你喜欢
    • 2013-09-12
    • 2021-11-30
    • 1970-01-01
    • 2011-03-10
    • 1970-01-01
    • 1970-01-01
    • 2022-11-17
    • 1970-01-01
    • 2016-09-06
    相关资源
    最近更新 更多