我需要将字符串解析为(2)小数点。
像这样:console.log("12345.6789"); // return 12345.67
我面临的问题是,如果小数位数为.00
,则会删除数字(小数),而是返回整数。
console.log(parseFloat("123.00"))// return 123 // expected 123.00
console.log(parseFloat("123.01"))// return 123.01 // expected 123.01
如果您想知道为什么这个问题?这是因为我需要提供数据,因此很容易扫描人类。
例如:下面不漂亮或不易阅读(特别是当文本与右边对齐时),我们进入数以千万计等......
123.23
123,456.46
123
123,956.01
145
135.02
我需要它是这样的: 123.23 123.46 123.00 123.01 145.00 135.02
typeof
也不应该是字符串而是实际数字。
123.00 // correct
"123.00"// incorrect // (I can use .tofixed() so this is not useful )
答案 0 :(得分:1)
这不是你尝试它的方式。你想要一个字符串。毫无疑问,3.00
与3
相同,如果您将其保存为数字,打印将没有任何区别。您想手动添加“0”,因此您必须创建一个字符串。
.tofixed()非常适合此用途。如果你打印东西,无论如何都会转换为字符串。
答案 1 :(得分:1)
如果您打印到控制台
console.log( (123).toFixed( 2 ) ); // outputs "123.00"
但是,输出周围的引号只是为了说明它是一个字符串。使用.toFixed()
。
答案 2 :(得分:1)
试试这个
如果值是文本类型:
parseFloat("123.456").toFixed(2);
如果值是数字:
var numb = 123.23454;
numb = numb.toFixed(2);
答案 3 :(得分:0)
正如其他人已经说过的那样,toFixed()
函数会处理小数部分
如果您还想添加千位分隔符以提高可读性,则可以使用 here 所述的简单正则表达式。
var d = ... // <-- this is a number
var str = d.toFixed(2)
.replace(/\B(?=(\d{3})+(?!\d))/g, ",");
// ^-- use this "replace()" to add thousand separators
另请参阅此 short demo 。