Decimal 基础数学运算示例
以下为通过不同构造函数初始化 Decimal
对象的,并进行基础数学运算示例:
import std.math.numeric.*
main() {
let decimal1: Decimal = Decimal("12345.6789")
let decimal2: Decimal = Decimal(BigInt("987654321"), 6)
println("without ctx:")
println("${decimal1} + ${decimal2} = ${decimal1 + decimal2}")
println("${decimal1} - ${decimal2} = ${decimal1 - decimal2}")
println("${decimal1} * ${decimal2} = ${decimal1 * decimal2}")
println("${decimal1} / ${decimal2} = ${decimal1 / decimal2}")
let (quo, rem) = decimal1.divAndRem(decimal2)
println("${decimal1} / ${decimal2} = ${quo} .. ${rem}")
println("with ctx(precision: 8, HALF_EVEN):")
let baseOperCtx = DecimalContext(8, HALF_EVEN)
println("${decimal1} + ${decimal2} = ${decimal1.add(decimal2, baseOperCtx)}")
println("${decimal1} - ${decimal2} = ${decimal1.sub(decimal2, baseOperCtx)}")
println("${decimal1} * ${decimal2} = ${decimal1.mul(decimal2, baseOperCtx)}")
println("${decimal1} / ${decimal2} = ${decimal1.div(decimal2, baseOperCtx)}")
let (quoWithCtx, remWithCtx) = decimal1.divAndRem(decimal2, baseOperCtx)
println("${decimal1} / ${decimal2} = ${quoWithCtx} .. ${remWithCtx}")
return 0
}
运行结果:
without ctx:
12345.6789 + 987.654321 = 13333.333221
12345.6789 - 987.654321 = 11358.024579
12345.6789 * 987.654321 = 12193263.1112635269
12345.6789 / 987.654321 = 12.49999988609375000142382812498220
12345.6789 / 987.654321 = 12 .. 493.827048
with ctx(precision: 8, HALF_EVEN):
12345.6789 + 987.654321 = 13333.333
12345.6789 - 987.654321 = 11358.025
12345.6789 * 987.654321 = 12193263
12345.6789 / 987.654321 = 12.500000
12345.6789 / 987.654321 = 12 .. 493.827048