JavaScript - parseFloat 强制 2 位小数作为 NUMBER
Posted
技术标签:
【中文标题】JavaScript - parseFloat 强制 2 位小数作为 NUMBER【英文标题】:JavaScript - parseFloat force 2 decimals as NUMBER 【发布时间】:2017-04-19 19:11:25 【问题描述】:我意识到这个问题已经以某种形式被问过很多次了,但是到目前为止我读到的每个答案都说使用 .toFixed(2),不幸的是,它以 String的形式返回结果>.
有人建议解析两次,例如:
parseFloat(parseFloat("29.6").toFixed(2))
但返回:
29.6
有没有办法强制 parseFloat(或其他任何东西!)返回带有 2 位小数的 NUMBER 类型?
【问题讨论】:
实际的 数字 在其打印表示的小数部分不会有尾随0
。
为什么需要小数点后两位?需要显示的话,string
类型比较合适,如果需要在计算中使用,0无意义。
这是因为5.50000
是5.5
如果它是一个数字。如果你想要0
,那么不要parseFloat
toFixed
的返回值是一个字符串("29.60"
)。
我知道 5.5 和 5.50 是相等的,但我需要显示(用零)并用作数字,我也知道 javascript 的限制,但希望有人有一个聪明的解决方法我可以避免显示字符串。这是一个远射:D。
【参考方案1】:
你可以使用:
var your_value = 10.01 // replace with any value you desire
parseFloat(Math.round(your_value * 100) / 100).toFixed(2);
例子
var j = parseFloat(Math.round(29.6 * 100) / 100).toFixed(2);
console.log(j);
//Output = >"29.60"
var j = parseFloat(Math.round(30.2100 * 100) / 100).toFixed(2);
console.log(j);
//Output =>"30.21"
【讨论】:
这没有回答问题。您正在创建一个字符串,而 OP 需要一个数字。 OP 已经声明toFixed
没有做他们想做的事。 (JS 也不做他们想做的事,这是我们试图解释的。)
我明白了。那么这个问题有点奇怪,因为我们尝试的 29.60 基本上是 29.6 转换为数字类型。对不起,我真的没有阅读数字部分。
是的,OP 对数字的印刷表示存在误解。以上是关于JavaScript - parseFloat 强制 2 位小数作为 NUMBER的主要内容,如果未能解决你的问题,请参考以下文章
哪个javascript函数像parsefloat一样将语言环境作为参数?
JavaScript ParseFloat重新植入,显示小数限制