【Number関数・parseFloat・jQuery・numeral.js】JavaScriptで通貨文字列をdoubleに変換する方法
JavaScriptで通貨文字列をdoubleに変換する方法
Number()
関数は、文字列を数値に変換します。通貨文字列の場合、小数点以下の桁数を指定するために、toFixed()
メソッドと組み合わせて使うと便利です。
const currencyString = "1,234,567.89";
const doubleValue = Number(currencyString.toFixed(2));
console.log(doubleValue); // 1234567.89
parseFloat()
関数は、文字列を浮動小数点数に変換します。通貨文字列の場合、カンマなどの記号を無視して変換することができます。
const currencyString = "1,234,567.89";
const doubleValue = parseFloat(currencyString);
console.log(doubleValue); // 1234567.89
jQueryを使えば、より簡単に通貨文字列をdoubleに変換することができます。
const currencyString = "$1,234,567.89";
const doubleValue = $(currencyString).val();
console.log(doubleValue); // 1234567.89
ライブラリを使う
numeral.js
などのライブラリを使えば、より複雑な通貨フォーマットにも対応することができます。
const numeral = require('numeral');
const currencyString = "$1,234,567.89";
const doubleValue = numeral(currencyString).value();
console.log(doubleValue); // 1234567.89
注意点
- 通貨文字列によっては、上記の方法で正しく変換できない場合があります。
- 変換する前に、通貨文字列が正しい形式であることを確認する必要があります。
Number()関数を使う
const currencyString = "1,234,567.89";
const doubleValue = Number(currencyString.toFixed(2));
console.log(doubleValue); // 1234567.89
parseFloat()関数を使う
const currencyString = "1,234,567.89";
const doubleValue = parseFloat(currencyString);
console.log(doubleValue); // 1234567.89
jQueryを使う
const currencyString = "$1,234,567.89";
const doubleValue = $(currencyString).val();
console.log(doubleValue); // 1234567.89
const numeral = require('numeral');
const currencyString = "$1,234,567.89";
const doubleValue = numeral(currencyString).value();
console.log(doubleValue); // 1234567.89
出力結果
1234567.89
1234567.89
1234567.89
1234567.89
説明
- 上記のコードでは、
currencyString
という変数に通貨文字列を代入しています。 Number()
関数、parseFloat()
関数、jQuery、numeral.jsライブラリを使って、currencyString
をdoubleに変換しています。- 変換結果をコンソールに出力しています。
通貨文字列をdoubleに変換するその他の方法
正規表現を使って、通貨文字列から数字部分のみを抽出することができます。
const currencyString = "1,234,567.89";
const doubleValue = parseFloat(currencyString.replace(/[^0-9.]/g, ""));
console.log(doubleValue); // 1234567.89
手動で変換する
通貨文字列を1文字ずつ処理して、doubleに変換することができます。
const currencyString = "1,234,567.89";
let doubleValue = 0;
let isDecimal = false;
let decimalCount = 0;
for (let i = 0; i < currencyString.length; i++) {
const char = currencyString[i];
if (char >= "0" && char <= "9") {
if (isDecimal) {
doubleValue += (char - "0") / Math.pow(10, decimalCount);
decimalCount++;
} else {
doubleValue = doubleValue * 10 + (char - "0");
}
} else if (char === ".") {
isDecimal = true;
}
}
console.log(doubleValue); // 1234567.89
const numeral = require('numeral');
const currencyString = "$1,234,567.89";
const doubleValue = numeral(currencyString).value();
console.log(doubleValue); // 1234567.89
javascript jquery