如何将货币字符串转换为double与jQuery或JavaScript?


javascript jquery


我有一个文本框,将有一个货币字符串在里面,我则需要该字符串转换为double对其执行操作。 “$ 1,100.00”-> 1100.00 这需要发生的所有客户端端。我别无选择,只能离开货币字符串作为货币字符串作为输入,但需要转换/将其转换为一个双允许的数学运算。


本文地址 :CodeGo.net/33162/ 


------------------------------------------------------------------------------------------------------------------------- 


1. 

删除所有非点/数字:

var currency = "$1,100.00";
var number = Number(currency.replace(/[^0-9\.]+/g,""));



2. 

使用正则表达式来删除格式(美元parseFloat将字符串转换为浮点数。`

var currency = "$1,100.00";
currency.replace(/[$,]+/g,"");
var result = parseFloat(currency) + .05;



3. 

我知道这是一个老问题,但想给一个额外的选项。 jQuery的全局化时代赋予解析文化特定的格式为浮点数的能力。 给定一个字符串“$ 13,042.00”,并使之全局化设置为en-US:

Globalize.culture("en-US");


你可以分析的float值了,像这样:

var result = Globalize.parseFloat(Globalize.format("$13,042.00", "c"));


这会给你:

13042.00


并允许您与其他文化的工作。 


4. 

你可以试试这个

<script type="text/javascript">
var str="$1,112.12";
str = str.replace(",","");
str = str.replace("$","");
document.write(parseFloat(str));
</script>



5. 

我知道你已经找到了解决你的问题,我只是想,或许你可以看看下面的更广泛的jQuery插件用于国际数字格式: 国际数字格式化 


6. 

accounting.js是要走的路。它在一个项目,有很好的吧。

accounting.formatMoney(4999.99, "€", 2, ".", ","); // €4.999,99
accounting.unformat("€ 1.000.000,00", ","); // 1000000


您可以在GitHub上找到它 


7. 

我知道这是一个老问题 CodeGo.net,但CMS的答案似乎有一个小小的瑕疵:“。”它只有在货币作品作为小数分隔符。 例如,如果你需要与俄罗斯卢布工作,该字符串将看起来像这样: “1 000,00擦。” 我的解决方案是远不比优雅CMS的,但它应该做的伎俩。

var currency = "1 000,00 rub."; //it works for US-style currency strings as well
var cur_re = /\D*(\d.*?\d)(?:\D+(\d{2}))?\D*$/;
var parts = cur_re.exec(currency);
var number = parseFloat(parts[1].replace(/\D/,'')+'.'+(parts[2]?parts[2]:'00'));


假设: 货币十进制表示法 没有数字的不属于货币值的一部分中的字符串 货币值包含0或2的小数部分的位数* 正则表达式甚至可以处理像“1,999美元和99美分”,虽然它不是一个预期的函数,不应加以依赖。 希望这将有助于 


8. 

将字符串转换为十进制:

var myString = '1234.098';

var myInteger = parseInt(myString); // result = 1234
var myNumber = parseFloat(myString); // result = 1234.098


为了减少小数位数:

var myNumber = 1234.098;
myNumber = myNumber.toFixed(2); // result = 1234.09