いきなりですがクイズです。
下のコンソールはどう表示されるでしょうか?
console.log(5 + '7')
正解は 57
12にはなりません。
これはjavascriptで+を使う場合、どちらかが文字列の場合はもう片方も文字列に変換されます。
では3つ以上の数を使う場合はどうなるのでしょうか?
試してみました。
console.log(5 + 5 + '7' + 5)//1075
console.log('5' + 5 + 7 + 5)//5575
console.log(5 + '5' + 7 + 5)//5575
console.log(5 + 5 + 5 + '7' + 5)//1575
javascriptは前から順に読み込んでいるので5 + 5 + ‘7’ + 5は5+5は数値として計算されるということですね。
Number()
値を数値化するのに便利なのが
Number()
他にも
+ 0
をつければ数値変換し、
+ ""
をつければ
文字列になります。
もう1点Number()で注意が必要なところが
整数部分だけを取得するわけではないこと
です。
そこで以下のメソッドを紹介します。
Math.floor(x)
引数xを切り捨てた整数を返します。
Math.ceil(x)
引数xを切り上げた整数を返します。
Math.round(x)
引数xを四捨五入します。
話を戻してNumber()を使って整数を取得するにはこうなります。
const numString = "123.45"
const num = Number(numString) // 文字列を数値に変換
const integerNum = Math.floor(num) // 整数部分のみを取得
console.log(integerNum) // Output: 123
typeof
他にもtypeofを使って数値か文字列かを判別する方法もあります。
以下は三項演算子を使って、typeofで数値かどうかを判別し、
数値ならば3桁カンマ区切りの数値に変換し、
そうでなければ’数値を入力してください’というメッセージを表示しています。
const num = 1000
const Number = typeof num === 'number' ? num.toLocaleString() : '数値を入力してください'
console.log(Number)//1,000