我需要将格式化的数字转换为JS默认的数字格式。
这是我的代码:
String.prototype.toJsFloatFormat = function() {
debugger;
var newVal = this;
return newVal;
}
//Example of use
var input = 10000.22; //default js format
var formatted = input.toLocaleString("es"); // result is: 10.000,22
var unformatted = formatted.toJsFloatFormat(); //expected result = 10000.22;
问题是当我需要得到格式化的数字(10.000,22),我用这个格式化的数字进行操作(parseFloat(10.000,22)+ 1000),我得到了不好的结果(parseFloat(10.000,22)+ 1000 = 1010)
先谢谢你。
6条答案
按热度按时间nhhxz33t1#
这不容易大多数评论都说“不要尝试-在数字本身上进行计算,而不是格式化的值”。
你需要弄清楚小数点和千位分隔符是什么。为此,您需要知道该数字转换为哪个区域设置。
一旦你有了它,你就可以替换格式化字符串中的字符了。
没有办法计算出locale --你必须知道它并将它传递给函数。
gmxoilav2#
无需重新发明轮子-https://github.com/globalizejs/globalize#readme
mnemlml83#
我是这样做的(在我的例子中,它是'ru'本地格式,所以我替换了'space'符号):
您的案例:
dojqjjoe4#
是我做的,对我来说很好
qaxu7uf25#
如果你需要James Long的答案,但在TypeScript中,这里是:)
Answer credits to James Long
kt06eoxx6#
我的函数用于格式化和取消格式化货币数字为'en-US'。希望能帮上忙