Macro dec
dec!() { /* proc-macro */ }Expand description
Transform a literal number directly to a Decimal at compile time.
Any Rust number format works, for example:
dec!(1),dec!(-1),dec!(1_999),dec!(- 1_999)dec!(0b1),dec!(-0b1_1111),dec!(0o1),dec!(-0o1_777),dec!(0x1),dec!(-0x1_Ffff)dec!(1.),dec!(-1.111_009),dec!(1e6),dec!(-1.2e+6),dec!(12e-6),dec!(-1.2e-6)
§Option radix
You can give it integers (not float-like) in any radix from 2 to 36 inclusive, using the letters too:
dec!(100, radix 2) == 4, dec!(-1_222, radix 3) == -53, dec!(z1, radix 36) == 1261,
dec!(-1_xyz, radix 36) == -90683
§Option exp
This is the same as the e 10’s exponent in float syntax (except as a Rust expression it doesn’t accept
a unary +.) You need this for other radixes. Currently, it must be between -28 and +28 inclusive:
dec!(10, radix 2, exp 5) == 200_000, dec!( -1_777, exp -3, radix 8) == dec!(-1.023)
§Example
use rust_decimal_macros::dec;
// If the reexportable feature is enabled, `Decimal` needs to be in scope
#[cfg(feature = "reexportable")]
use rust_decimal::Decimal;
let number = dec!(1.2345);
assert_eq!("1.2345", number.to_string());
let number = dec!(-5.4321);
assert_eq!("-5.4321", number.to_string());
let number = dec!(-0o1_777);
assert_eq!("-1023", number.to_string());
let number = dec!(-1_777, radix 8);
assert_eq!("-1023", number.to_string());