数値

数値のプリミティブ型は以下のものがあります。

f32f64以外はmin_valuemax_valueメソッドにより取得・確認できます。

(i8::min_value(), i8::max_value())
// (-128, 127) (-2^7, 2^7 - 1)
(i16::min_value(), i16::max_value())
// (-32768, 32767) (-2^15, 2^15 - 1)
(i32::min_value(), i32::max_value())
// (-2147483648, 2147483647) 
(i64::min_value(), i64::max_value()) 
// (-9223372036854775808, 9223372036854775807)
(i128::min_value(), i128::max_value())
// (-170141183460469231731687303715884105728, 170141183460469231731687303715884105727)
(u8::min_value(), u8::max_value())
// (0, 255) (0, 2^8 - 1)
(u16::min_value(), u16::max_value())
// (0, 65535) (0, 2^16 - 1)
(u32::min_value(), u32::max_value())
// (0, 4294967295) 
(u64::min_value(), u64::max_value())
// (0, 18446744073709551615) 
(u128::min_value(), u128::max_value())
// (0, 340282366920938463463374607431768211455)
(isize::min_value(), isize::max_value())
// (-9223372036854775808, 9223372036854775807)
(usize::min_value(), usize::max_value())
// (0, 18446744073709551615)

f32f64はそれぞれi32i64の範囲内で小数点有りの数値が持てます。

宣言

変数宣言時に希望する型を指定するか、型名を数値の後ろに付けることで希望する型の値が得られます。デフォルトは整数の場合i32、少数以下が有る場合f32になります。

let a: i8 = 1; // i8
let b = 12i16; // i16
let c = 123; // i32

値を足す

Trait std::ops::Addが上記の型すべてに実装されているので、それぞれで+が使えます。

10 + 20 // 30i32
4.5 + 5.5 // 10.0f32

値を順番に足していきたいような場合、Trait std::ops::AddAssignによる+=が使えます。

let mut num = 1;
num += 2;
assert_eq!(num, 3);

値を引く

Trait std::ops::Subが上記の型すべてに実装されているので、それぞれで-が使えます。

30 - 10 // 20i32
10.0 - 4.5 // 5.5f32

値を順番に引きていきたいような場合Trait std::ops::SubAssignによる-=が使えます。

let mut num = 3;
num -= 2;
assert_eq!(num, 1);

値を掛ける

これまでのようにTrait std::ops::Mulにより*、またTrait std::ops::MulAssignによる*=が実装されています。

2 * 3 // 6i32
2.0 * 3.0 // 6.0f32
let mut num = 2;
num *= 3;
assert_eq!(num, 6);

値を割る

これまでのようにTrait std::ops::Divにより/、またTrait std::ops::DivAssignによる/=が実装されています。

値が割り切れなかった場合、f32f64以外では小数点以下は切り捨てされます。

5 / 4 // 1i32
5.0 / 4.0 // 1.25.0f32
let mut num = 6.0;
num /= 4.0;
assert_eq!(num, 1.5f32);