pub const DEC_FLOAT_SIGN: i32 = -2147483648;
pub const DEC_QUAD_PMAX: usize = 34;
pub const DEC_ROUND_CEILING: u32 = 0;
pub const DEC_ROUND_UP: u32 = 1;
pub const DEC_ROUND_HALF_UP: u32 = 2;
pub const DEC_ROUND_HALF_EVEN: u32 = 3;
pub const DEC_ROUND_HALF_DOWN: u32 = 4;
pub const DEC_ROUND_DOWN: u32 = 5;
pub const DEC_ROUND_FLOOR: u32 = 6;
pub const DEC_ROUND_05UP: u32 = 7;
pub fn bcd(n: u128) -> Vec<u8> {
let mut v = n;
let mut digits = Vec::<u8>::with_capacity(60);
loop {
digits.push((v % 10) as u8);
v /= 10;
if v == 0 {
break;
}
}
digits.reverse();
digits
}
pub fn bcd_quad(n: u128) -> [u8; DEC_QUAD_PMAX] {
let mut v = n;
let mut digits = [0; DEC_QUAD_PMAX];
let mut index = digits.len() - 1;
loop {
digits[index] = (v % 10) as u8;
v /= 10;
if index == 0 || v == 0 {
break;
}
index -= 1;
}
digits
}