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.500005.5 如果它是一个数字。如果你想要0,那么不要parseFloattoFixed的返回值是一个字符串("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重新植入,显示小数限制

Javascript数值转换(Number,parseInt,parseFloat)

parseFloat的取值

JavaScript日常会跳的坑系列

parseFloat()