2016-08-21 37 views
1

我有用户输入包含小数的数字。我必须将输入修改为可用于计算的格式。jQuery数字格式不能正常工作

因此,考虑以下因素:

input   --> should become 
10,123.15  --> 10.123,15 
10.123,15  --> 10.123,15 
10,123.1  --> 10.123,10 
10.123,1  --> 10.123,10 
10,123  --> 10,123,00 
10.123  --> 10.123,00 
10.123,13562 --> 10.123,14 
10,123.13562 --> 10.123,14 

换句话说:使用点的千位分隔符,逗号用于小数分隔EN总是返回围捕,二十进制数。

我试过使用regex'es,substr,round,但我有点卡住了。我现在为上面提到的前两个例子工作,但现在它不工作了。

一直在这看几个小时,但也许你可以帮我吗? JQuery Number Formatting确实帮了我一些忙,但它仍然不适用于上述所有示例。

如果有人能帮助我,我会很高兴!

+1

如果逗号点之前,1.删除逗号,2.使用toFixed(2),3.用重新格式化许多欧洲的数字格式化的一个 - 如果前点逗号替换点一无所有,用点替换逗号。冲洗并重复 – mplungjan

回答

1

如果您提供一个区域设置,以您需要的方式格式化数字,则可以使用toLocaleString()来实现此目的;例如,de-DE。试试这个:

var foo = '10,123.15'; // number as string 
 
var num = parseFloat(foo.replace(',', '')); // remove the , and convert to float 
 
console.log(num.toLocaleString('de-DE')); // format to locale

0

THX的回答!

我尝试了他们,因为它,我有更多的想法。我已经通过从右向左迭代输入val来解决它,同时测试char是逗号还是点。然后照此行事。现在可以工作了!

再次感谢,

问候