數字字面值格式
本集目標
學會用底線分隔、不同進位制、型別後綴,以及浮點數字面值的各種寫法。
本集是第一章的補充。
概念說明
第一章我們學了基本的數字寫法,像 42、3.14。但 Rust 的數字字面值其實有很多寫法,讓你寫出來的數字更好讀、更精確。
底線分隔符
當數字很大的時候,1000000 和 1_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.0f64 或 1.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八進位- 型別後綴如
u8、i64、f32可以直接接在數字後面 - 浮點數支援科學記號(
1.0e10、2.5E-3) - 浮點數字面值必須有小數點或科學記號