0

単純な問題だと思っていた問題がありますが、簡単な解決策を見つけるのが難しいと感じています。寄付ページがあり、人々は金額を入力できます。問題は、一部の文化ではピリオドを使用して小数点を示し、他の文化ではコンマを使用することです。また、最も近い整数に丸めています。

次のように数値をフォーマットする簡単な方法はありますか?

12.95 は 13 に等しくなります。12,95 は 13 に等しくなります。12,000 は 12000 に等しくなります。12 000 は 12000 に等しくなります。

基本的に、コンマとピリオドをすべて取り除き、適切な整数を作成する必要があります。これは、実際に入力された数字に基づいている必要があります。ヨーロッパのコンピューターとキーボードを使用しているが、米ドルの金額を寄付したいと考えている人もいるからです。

ありがとうございました!

4

1 に答える 1

0

これは、与えられたすべての例で機能する最短のソリューションです。最後から 3 番目の文字をチェックし、それがコンマまたはドットである場合は、それを整数の区切り文字と見なします。

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もご覧ください。

于 2013-10-10T21:42:40.833 に答える