多种文化中的货币

时间:2013-10-10 19:26:02

标签: javascript currency

我认为这是一个简单的问题,但我发现很难找到简单的解决方案。我有一个捐款页面,人们可以输入他们的金额。问题是某些文化使用句点来表示小数,而其他文化使用逗号。我也是四舍五入到最接近的整数。

是否有一种简单的方法可以格式化数字:

12.95将等于13。 12,95将等于13。 12,000将等于12000。 12 000将等于12000。 12.000将等于12000。 12.45将等于12。 12,45将等于12。

基本上我需要删除任何逗号和句点并创建一个合适的整数。这需要基于实际输入的数量,因为有些人可能正在使用欧洲计算机和键盘,但希望捐赠美元金额等。

谢谢!

1 个答案:

答案 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,它可以很好地格式化/解析货币。