美文网首页
BigDecimal 的对比

BigDecimal 的对比

作者: 山哥Samuel | 来源:发表于2019-05-03 09:26 被阅读0次

最近在对比不同语言的BigDecimal的表现,以期选择一个最适合做商业计算的。

Groovy

int和BigDecimal运算,结果是BigDecimal;但是BigDecimal和Double运算,结果是Double。有点可惜,还要再研究一下。

x=3.0g
y = (x ** (1g/2)) * 1g
z = x ** 2
println(y)
println(x.getClass())
println(y.getClass())

println("z: " + z  + " is " + z.getClass())

Double a=1.0
b=1.0g
c=a*b
println("c: " + c  + " is " + c.getClass())

-------- Result is ---------
Output of Script 23 ms
1.7320508075688772
class java.math.BigDecimal
class java.lang.Double
z: 9.00 is class java.math.BigDecimal
c: 1.0 is class java.lang.Double

Ruby

我们可以很清晰的看到,BigDecimal在Ruby是一等公民,只要计算中涉及到BigDecimal,计算结果就会升级到BigDecimal。试到这里,我只想说一句:“Yay! What a perfect language for money computing!”

Samuels-MBP:~ sam$ irb
irb(main):001:0> require 'bigdecimal'
=> true
irb(main):003:0> 1.class
=> Fixnum
irb(main):004:0> 1.0.class
=> Float
irb(main):005:0> dec=BigDecimal.new(100)
=> #<BigDecimal:7fe92901c240,'0.1E3',9(27)>
irb(main):006:0> dec.class
=> BigDecimal
irb(main):007:0> (1+dec).class
=> BigDecimal
irb(main):008:0> (1.0+dec).class
=> BigDecimal
irb(main):009:0> (1.0*dec).class
=> BigDecimal
irb(main):010:0> 

相关文章

网友评论

      本文标题:BigDecimal 的对比

      本文链接:https://www.haomeiwen.com/subject/egdanqtx.html