2013-06-20 128 views
0

我正在使用数学javascript,并且在使用逗号代替点和逗号的逗号时遇到了一些麻烦。我可以得到千位分隔符的逗号来改变,但不能设法让小数点变成逗号。我尝试了其他帖子的一些建议,没有任何喜悦。目标是为希腊应用程序实现数字格式。Javascript Math用逗号代替点/小数

这是我有:

function addCommas(nStr) { 
    nStr += ''; 
    x = nStr.split(','); 
    x1 = x[0]; 
    x2 = x.length > 1 ? ',' + x[1] : ''; 
    var rgx = /(\d+)(\d{3})/; 
    while (rgx.test(x1)) { 
     x1 = x1.replace(rgx, '$1' + ',' + '$2'); 
     x2 = x.replace(/,([^,]*)$/, ".$1"); 
    } 
    return x1 + x2; 
} 

function addCommas2(nStr, nztr) { 
    var sam = nStr.toFixed(nztr); 
    return sam; 
} 

function roundNumber(num, dec) { 
    return Math.round(num * Math.pow(10, dec))/Math.pow(10, dec); 

} 
+0

检查这个问题的答案:http://stackoverflow.com/questions/1068284/format-numbers-in-javascript – cfs

+1

我无法理解你的问题,你可以发布一个示例数据,如: '1234,89'变成'1,234.89' –

+0

你想要千位分隔符*和*为小数点的逗号吗?请更具体的预期产出,也许增加一些例子。 – Bergi

回答

0

我会建议使用Globalize library。它可以让你轻松完成数字的全球化。下面的例子是从documentation page拍摄和显示输出使用特定的文化号码:

Globalize.culture("en"); 
Globalize.format(1234.567, "n"); // "1,234.57" 

Globalize.culture("nl"); 
Globalize.format(1234.567, "n"); // "1.234,57" - note that the comma and dot are switched 

我创建了一个小样本项目,展示了如何使用这个库用于客户端的全球化:https://github.com/ErikSchierboom/clientsideglobalization

2

这里有一个务实的做法:

var newString = '2,000.80'.replace(',','#').replace('.',',').replace('#','.'); 
//> '2.000,80' 

基本上无效字符替换一个字符和替换以后。