3.8 數值(Number)

javascript/practice 資料夾下,建立 number.html 來練習。

數值宣告

var x = 100;
var y = 3.14; // 浮點數

var z = "100"; // 這是字串 "100",非數值。

要留意的是:數值不需要加雙引號或單引號,如果加上去的話,就會被視為字串。

指數

e = exponential (指數):

var x = 123e5;
var y = 123e-5;

console.log(x); // 12300000
console.log(y); // 0.00123

數值、字串相加

數值與數值相加,產生結果是數值;

數值與字串相加,會產生字串。

var x = 10;
var y = 20;
var z = "20";

console.log(x + y); // 30
console.log(x + z); // "1020"

隱含轉型:上述的 x + z,其實真的執行的會是先將「數值 x 」轉成「字串 x」,這個過程就是 隱含轉型,是瀏覽器預設會幫我們執行的事。所以最後會變成字串與字串相加,就變成 "1020"。

NaN、Infinity、-Infinity

NaN 是一個特殊的保留字,表示是「Not a Number」。

var x = 100 / "其它";
var y = 2 / 0;
var z = -2 / 0;

console.log(x); // NaN
console.log(y); // Infinity
Console.log(z); // -Infinity

數值常用函式

parseInt()

將字串數字轉成數值。例:

var x = "100";
var y = 200;

console.log(x + y);           // 100200
console.log(parseInt(x) + y); // 300

var z = parseInt(x);
console.log(z);               // 100
console.log(typeof z);        // number

如果是浮點數(小數),就會直接捨去小數部份:

var y = 100.9;
console.log( parseInt(y) ); // 100

parseFloat()

將字串數字轉成浮點數。如:

var x = "100.9";
var y = parseFloat(x);

console.log(y);        // 100.9
console.log(typeof y); // number

console.log(x + 10); // 100.910
console.log(y + 10); // 110.9

toString()

將數值轉成字串,例:

var x = 100;
var y = x.toString();

console.log(x);        // 100
console.log(typeof x); // number

console.log(y);        // "100"
console.log(typeof y); // string

toFixed()

指定四捨五入到小數點的第幾位,然後會回傳字串。例:

var x = 100.526;
var y = x.toFixed(0);

console.log(y);        // 101
console.log(typeof y); // string

console.log( x.toFixed(1) ); // 100.5
console.log( x.toFixed(2) ); // 100.53

但其實有問題:(其實是四捨六入五成雙)

示意圖:

var x = 100.5555;

console.log( x.toFixed(1) ); // 100.6
console.log( x.toFixed(2) ); // 100.56
console.log( x.toFixed(3) ); // 100.555 (怪!)

var x = 100.5545;
console.log( x.toFixed(3) ); // 100.555 (怪!)

var x = 100.55551;
console.log( x.toFixed(3) ); // 100.556 (怪!)

isNaN()

判斷某數數是不是「Not a Number」,即 NaN:

var x = 100 / "其它";

console.log(x);        // NaN
console.log(isNaN(x)); // true

Last updated