将JavaScript字符串变量转换为十进制/货币


Answers:


240

是- parseFloat

parseFloat(document.getElementById(amtid4).innerHTML);

要设置数字格式,请使用toFixed

var num = parseFloat(document.getElementById(amtid4).innerHTML).toFixed(2);

num 现在是一个字符串,其数字格式为两位小数。


1
我们可以用2个小数点(例如120.50)使该变量吗?现在我只得到120.5。
瓦拉达

16
引用@PhilipWhitehouse的说法:“请以后使用此书的任何人,请勿使用浮点数来存储货币。您会丢失精度和数据。应将其存储为整数美分(或几美分等),然后先转换输出。”。来源:stackoverflow.com/questions/149055/...
SSH这

@SSHThis据我所知,JavaScript没有整数类型。它只有一个数字类型,所有类型都内部存储为64位浮点数。您的观点对其他确实具有整数类型的语言(例如C#,C ++)有效,但对于JavaScript却不是。
西蒙·布兰温

1
@SimonBrangwin他的观点仍然有效,但语义可能会令人困惑。他真正的意思是“只将货币作为整数存储在javascript中,因为它们将被存储为浮点数”。
乔什·诺

提醒您:parseFloat('22w')22parseFloat('w22')NaN
IG Pascual,2017年

65

您还可以使用Number构造函数/函数(不需要基数,并且可用于整数和浮点数):

Number('09'); /=> 9
Number('09.0987'); /=> 9.0987

也可以像Andy E在评论中说的那样,您可以+用于转化

+'09'; /=> 9
+'09.0987'; /=> 9.0987

IE11不支持此功能
裤子

@Pants是关于ES6中Number内置对象的扩展,而不是关于可以使用的Number
KooiInc,

11

这有效:

var num = parseFloat(document.getElementById(amtid4).innerHTML, 10).toFixed(2);


2

依靠javascript函数比较和玩数字是相当冒险的。在javascript(0.1 + 0.2 == 0.3)中,由于舍入错误,将返回false。使用math.js库。


1

一种简单的简便方法是使用+ x,它使符号和十进制数字保持不变。另一种选择是使用parseFloat(x)。parseFloat(x)和+ x之间的区别是空白字符串+ x返回0,其中parseFloat(x)返回NaN。


1

我做了一些辅助功能来执行此操作并捕获所有格式错误的数据

function convertToPounds(str) { 
    var n = Number.parseFloat(str);
    if(!str || isNaN(n) || n < 0) return 0;
    return n.toFixed(2);
}

演示在这里

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.