我认为这是一个简单的问题,但我发现很难找到简单的解决方案。我有一个捐款页面,人们可以输入他们的金额。问题是某些文化使用句点来表示小数,而其他文化使用逗号。我也是四舍五入到最接近的整数。
是否有一种简单的方法可以格式化数字:
12.95将等于13。 12,95将等于13。 12,000将等于12000。 12 000将等于12000。 12.000将等于12000。 12.45将等于12。 12,45将等于12。基本上我需要删除任何逗号和句点并创建一个合适的整数。这需要基于实际输入的数量,因为有些人可能正在使用欧洲计算机和键盘,但希望捐赠美元金额等。
谢谢!
答案 0 :(得分:0)
这是最简单的解决方案,将适用于所有给定的示例。我检查第三个到最后一个字符,如果它的逗号或点我假设它是一个整数分隔符。
function parse(source) {
var sep = source.charAt(source.length - 3);
switch (sep) {
case '.':
case ',':
var parts = source.split(sep);
var norm = parts[0].replace(/(\.|,|\s)/g, '') + '.' + parts[1];
break;
default:
var norm = source.replace(/(\.|,|\s)/g, '');
}
return Math.round(Number(norm));
}
演示:http://jsfiddle.net/5C4aN/2/
另请查看accounting.js,它可以很好地格式化/解析货币。