Javascript如何将十进制数转换为具有特定小数位数的字符串

Posted

技术标签:

【中文标题】Javascript如何将十进制数转换为具有特定小数位数的字符串【英文标题】:Javascript How to convert a decimal number to a string with specific number of decimal places 【发布时间】:2020-07-21 12:37:56 【问题描述】:

javascript 代码中,我需要将十进制数格式化为特定的小数位数并获取其确切的字符串表示形式。例如,如果数字为 999999999.9,小数位数为 8,则预期值应为“999999999.90000000”

使用 Number.toFixed(8) 时,它会返回一个舍入值,这不是我想要的。请参考以下代码

var num = 999999999.9
var string_rep = num.toFixed(8)

>> the value of string_rep is "999999999.89999998" 

我使用了 num.toString() 并尝试通过添加/删除数字来手动格式化小数部分,但它不适用于像“0.00000008”这样的非常小的数字,因为函数 toString() 返回 科学记数法,例如“9e-8”

那么正确的方法应该是什么?

【问题讨论】:

您可以:将其转换为字符串,用点分割,用小数部分为 0 的 padright 并将它们连接起来。 @Eldar 我试过了,将小数字转换为字符串时会出现问题,因为它给出了像“9e-8”这样的科学记数法。我已经在帖子中解释过了,请阅读 你找到了正确的方法,你只是忘记了 JavaScript 使用 IEEE 浮点数。 这能回答你的问题吗? How to deal with floating point number precision in JavaScript? 【参考方案1】:

Number.prototype.toLocaleString 可以解决问题

    num.toLocaleString('en-US', minimumFractionDigits: 8, useGrouping: false)//"999999999.90000000"

【讨论】:

这正是我想要的。非常感谢您的回答

以上是关于Javascript如何将十进制数转换为具有特定小数位数的字符串的主要内容,如果未能解决你的问题,请参考以下文章

将科学计数法中的十进制数转换为 IEEE 754

将具有科学计数法的字符串列表转换为十进制数

将整数转换为具有特定格式的十六进制字符串

如何在Javascript中将整数转换为具有固定长度的十六进制?

将 SQL 查询转换为 JPQL 查询 - 总和具有特定文本值的属性数

求c语言将十进制数转换为16进制的函数