Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

數字字面值格式

本集目標

學會用底線分隔、不同進位制、型別後綴,以及浮點數字面值的各種寫法。

本集是第一章的補充。

概念說明

第一章我們學了基本的數字寫法,像 423.14。但 Rust 的數字字面值其實有很多寫法,讓你寫出來的數字更好讀、更精確。

底線分隔符

當數字很大的時候,10000001_000_000 哪個比較好讀?Rust 允許你在數字字面值的任意位置插入底線 _,編譯器會直接忽略它們:

fn main() {
    let million = 1_000_000;
    let weird_but_legal = 1_00_00_00; // 合法,但別這樣寫
}

不同進位制

除了十進位,Rust 還支援三種進位制前綴:

  • 0x — 十六進位(例如 0xff = 255)
  • 0b — 二進位(例如 0b1010 = 10)
  • 0o — 八進位(例如 0o77 = 63)

這在處理位元運算、顏色值等場景特別實用。底線也能搭配進位制使用:0b1111_0000

型別後綴

你可以直接在數字後面加上型別:

fn main() {
    let byte = 0xFFu8;      // 十六進位 + u8
    let big = 1_000_000i64; // 底線 + i64
    let pi = 3.14f32;       // 浮點數 + f32
}

不加後綴的話,整數預設是 i32,浮點數預設是 f64

浮點數字面值

浮點數有幾種寫法:

fn main() {
    let a = 3.14;        // 一般小數,預設 f64
    let b = 3.14f32;     // 指定 f32
    let c = 1.0e10;      // 科學記號:1.0 × 10^10
    let d = 2.5E-3;      // 科學記號:2.5 × 10^-3 = 0.0025
    let e = 1_234.567_8; // 底線也能用在浮點數裡
}

注意:Rust 的浮點數字面值必須有小數點或科學記號1f64 不合法,要寫 1.0f641.0

範例程式碼

fn main() {
    // 底線分隔
    let population = 23_000_000;
    println!("台灣人口約 {} 人", population);

    // 十六進位
    let hex_color = 0xFF5733;
    println!("顏色值:{}", hex_color);

    // 二進位
    let bits = 0b1010_1100;
    println!("位元值:{}", bits);

    // 八進位
    let octal = 0o755;
    println!("八進位 0o755 = {}", octal);

    // 型別後綴
    let byte_max = 0xFFu8;
    println!("u8 最大值:{}", byte_max);

    // 浮點數
    let pi = 3.14_159_265f64;
    println!("圓周率約 {}", pi);

    // 科學記號
    let speed_of_light = 3.0e8;
    println!("光速約 {} m/s", speed_of_light);

    let tiny = 1.6e-19;
    println!("電子電荷約 {} C", tiny);
}

重點整理

  • _ 可以插在數字字面值的任意位置,幫助閱讀,編譯器會忽略
  • 0x 十六進位、0b 二進位、0o 八進位
  • 型別後綴如 u8i64f32 可以直接接在數字後面
  • 浮點數支援科學記號(1.0e102.5E-3
  • 浮點數字面值必須有小數點或科學記號