moonbitlang/x/decimal does not have a README file
test {
let price = match @decimal.Decimal::from_string("19.99") {
Some(p) => p
None => fail("Invalid price")
}
let tax = match @decimal.Decimal::from_string("0.08") {
Some(t) => t
None => fail("Invalid tax rate")
}
let total = price + tax
inspect(total.to_string(), content="20.07")
}test {
let d = @decimal.Decimal::from_bigint(12345678901234567890N)
inspect(d.to_string(), content="12345678901234567890")
}test {
let d = match @decimal.Decimal::from_double(3.14159, 5) {
Some(d) => d
None => fail("Invalid double conversion")
}
inspect(d.to_string(), content="3.14159")
}test {
let d = @decimal.Decimal::from_int(42)
inspect(d.to_string(), content="42")
}test {
let d = match @decimal.Decimal::from_string("123.45") {
Some(d) => d
None => fail("Invalid decimal string")
}
inspect(d.to_string(), content="123.45")
}test {
let d = match @decimal.Decimal::new(12345N, 2) {
Some(d) => d
None => fail("Invalid decimal")
} // 123.45
inspect(d.to_string(), content="123.45")
}test {
let d = match @decimal.Decimal::from_string("3.14159") {
Some(d) => d
None => fail("Invalid decimal string")
}
let rounded = match d.round(2) {
Some(r) => r
None => fail("Invalid rounding")
}
inspect(rounded.to_string(), content="3.14")
}test {
let d = match @decimal.Decimal::from_string("123.45") {
Some(d) => d
None => fail("Invalid decimal string")
}
let scaled = match d.scale_to(4) {
Some(s) => s
None => fail("Invalid scaling")
}
inspect(scaled.to_string(), content="123.4500")
}test {
let d = match @decimal.Decimal::from_string("123.99") {
Some(d) => d
None => fail("Invalid decimal string")
}
inspect(d.to_bigint(), content="123")
}test {
let d = match @decimal.Decimal::from_string("3.14159") {
Some(d) => d
None => fail("Invalid decimal string")
}
inspect(d.to_double(), content="3.14159")
}test {
let d = match @decimal.Decimal::from_string("123.99") {
Some(d) => d
None => fail("Invalid decimal string")
}
debug_inspect(d.to_int(), content="Some(123)")
}test {
let d = match @decimal.Decimal::from_string("123.45") {
Some(d) => d
None => fail("Invalid decimal string")
}
inspect(d.to_string(), content="123.45")
}test {
let d = match @decimal.Decimal::from_string("3.14159") {
Some(d) => d
None => fail("Invalid decimal string")
}
let truncated = match d.truncate(2) {
Some(t) => t
None => fail("Invalid truncation")
}
inspect(truncated.to_string(), content="3.14")
}experimental packages for moonbitlang/core