数値のプリミティブ型は以下のものがあります。
f32
とf64
以外はmin_value
とmax_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)
f32
とf64
はそれぞれi32
とi64
の範囲内で小数点有りの数値が持てます。
宣言
変数宣言時に希望する型を指定するか、型名を数値の後ろに付けることで希望する型の値が得られます。デフォルトは整数の場合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による/=
が実装されています。
値が割り切れなかった場合、f32
とf64
以外では小数点以下は切り捨てされます。
5 / 4 // 1i32
5.0 / 4.0 // 1.25.0f32
let mut num = 6.0;
num /= 4.0;
assert_eq!(num, 1.5f32);