我正在使用toLocaleString()
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString转换为美元字符串格式,但我无法撤消操作。在我的情况下转换回美分。
dollarString.split('$')[1] * 100
一旦字符串中包含,
,就会显示出来。
有没有更好的方法来解决这个问题,而不是通过删除逗号的字符串?
如果我最终使用其他货币怎么办?我不能将货币兑换成美分代表,这样我就可以做数学,然后回到某个地方?
答案 0 :(得分:4)
假设您所在的区域设置使用句点作为小数点,您可以使用以下内容:
var dollarsAsFloat = parseFloat(dollarString.replace(/[^0-9-.]/g, ''));
以上使用正则表达式删除除数字和小数之外的所有内容。 parsefloat
函数将完成其余的工作。
小心点。有些国家/地区不像您那样使用逗号和小数!最好将货币金额保存在浮点变量中,并且只在实际打印时格式化它。
答案 1 :(得分:1)
正如其他人所建议的那样,您需要从字符串中删除(,
)。
dollarString.split('$')[1].replace(/\,/g,'') * 100
如果dollarString
的值只有$xx,xxx,xxx$xx,xxx,xxx
,那么您可以删除所有(,
)然后拆分
dollarString.replace(/\,/g,'').split('$')[1] * 100
答案 2 :(得分:1)
Ex:我决定在点和逗号分隔符之后使用n位数
Object.defineProperties(Number.prototype,{
locale:{
value:function(n){
n = n||2
return this.toLocaleString('en', {
minimumFractionDigits: n,
maximumFractionDigits: n
});
}
}
});
/从字符串反向编号/
Object.defineProperties(String.prototype,{
floatLocale:{
value: function(){
return parseFloat(this.replace(/,/g,""));
}
}
});
所以v= 1000.33; v === v.locale().floatLocale();