1

我需要将字符串解析为 (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 )
4

4 回答 4

1

这与您尝试的方式不同。你想要一个字符串。毫无疑问,3.00就像3将其保存为数字一样,打印不会有任何区别。您想手动添加“0”,因此您必须创建一个字符串。 .tofixed()非常适合这种用途。如果您打印内容,无论如何它都会转换为字符串。

于 2013-05-23T10:39:03.867 回答
1

如果您打印到控制台

console.log( (123).toFixed( 2 ) ); // outputs "123.00"

但是,输出周围的引号只是为了说明它是一个字符串这一事实。使用应该没问题.toFixed()

于 2013-05-23T10:53:10.110 回答
1

试试这个

如果值为文本类型:

 parseFloat("123.456").toFixed(2);

如果值为数字:

var numb = 123.23454;
numb = numb.toFixed(2);

参考

于 2013-05-23T11:01:30.773 回答
0

就像其他人已经说过的那样,该toFixed()功能将处理小数部分。
如果您还想添加千位分隔符以提高可读性,您可以使用此处描述的简单正则表达式。

var d = ...   // <-- this is a number
var str = d.toFixed(2)
           .replace(/\B(?=(\d{3})+(?!\d))/g, ",");
           //  ^-- use this "replace()" to add thousand separators

另请参阅这个简短的演示

于 2013-05-23T11:27:04.903 回答