我有一个文本框,其中将有一个货币字符串,然后我需要将该字符串转换为double来执行一些操作。
$1,100.00→1100.00
这需要发生在所有客户端。我别无选择,只能将货币字符串作为货币字符串作为输入,但需要将其强制转换/转换为double以允许一些数学操作。
我有一个文本框,其中将有一个货币字符串,然后我需要将该字符串转换为double来执行一些操作。
$1,100.00→1100.00
这需要发生在所有客户端。我别无选择,只能将货币字符串作为货币字符串作为输入,但需要将其强制转换/转换为double以允许一些数学操作。
当前回答
这个例子运行正常
Var货币= "$1,123,456.00"; var =数量数量(currency.replace (/ [^ 0 - 9 \] + / g, " ")); console.log(数量);
其他回答
我知道这是一个老问题,但我想提供一个额外的选项。
jQuery Globalize提供了将特定于区域性的格式解析为float的能力。
https://github.com/jquery/globalize
给定字符串"$13,042.00",Globalize设置为en-US:
Globalize.culture("en-US");
你可以像这样解析float值:
var result = Globalize.parseFloat(Globalize.format("$13,042.00", "c"));
这将给你:
13042.00
并且允许你与其他文化一起工作。
这个例子运行正常
Var货币= "$1,123,456.00"; var =数量数量(currency.replace (/ [^ 0 - 9 \] + / g, " ")); console.log(数量);
删除所有非点/数字:
var currency = "-$4,400.50";
var number = Number(currency.replace(/[^0-9.-]+/g,""));
这是我的函数。适用于所有货币..
function toFloat(num) {
dotPos = num.indexOf('.');
commaPos = num.indexOf(',');
if (dotPos < 0)
dotPos = 0;
if (commaPos < 0)
commaPos = 0;
if ((dotPos > commaPos) && dotPos)
sep = dotPos;
else {
if ((commaPos > dotPos) && commaPos)
sep = commaPos;
else
sep = false;
}
if (sep == false)
return parseFloat(num.replace(/[^\d]/g, ""));
return parseFloat(
num.substr(0, sep).replace(/[^\d]/g, "") + '.' +
num.substr(sep+1, num.length).replace(/[^0-9]/, "")
);
}
使用方法:toFloat("$1,100.00")或toFloat("$1,100.00")
$ 150.00
Fr. 150.00
€ 689.00
我已经测试了以上三个货币符号,你也可以做其他的。
var price = Fr. 150.00;
var priceFloat = price.replace(/[^\d\.]/g, '');
以上正则表达式将删除所有不是数字或句点的内容。所以你可以得到没有货币符号的字符串,但在“Fr. 150.00”的情况下,如果你控制台输出,那么你将得到价格为
console.log('priceFloat : '+priceFloat);
output will be like priceFloat : .150.00
这是错误的,所以你检查“。”的索引,然后拆分它,得到正确的结果。
if (priceFloat.indexOf('.') == 0) {
priceFloat = parseFloat(priceFloat.split('.')[1]);
}else{
priceFloat = parseFloat(priceFloat);
}