在Groovy部门中显示小数

时间:2014-02-14 19:54:16

标签: math groovy division

我确信这是一个非常简单的问题,但我被困住了。我是Groovy的新手。

让我说我有:

Long percentageFee = 285   
percentageFee = percentageFee / 100     //Display as 2.85%

我尝试了几种方法,将percentageFee转换为double等,但结果仍然只有2。

我必须弄错语法或其他东西。

3 个答案:

答案 0 :(得分:5)

如果向其中一个操作数添加小数位,则它不再是整数除法:

groovy:000> percentageFee = 285L
===> 285
groovy:000> percentageFee / 100.0
===> 2.85

这里100.0是BigDecimal。

如果这是Java,则将long与整数分开将导致long。但是在Groovy中它并不像那样工作。除法运算返回一个BigDecimal,将结果赋值给Long截断结果:

groovy:000> percentageFee = 285L
===> 285
groovy:000> f = percentageFee / 100
===> 2.85
groovy:000> f.class
===> class java.math.BigDecimal

(感谢blackdrag澄清。)

答案 1 :(得分:1)

你也可以用更“Groovy”的方式做到这一点,利用Groovy使 groovy - 动态类型变量的原因。

def percentageFee = 285   
percentageFee = percentageFee.div(100)
assert percentageFee == 2.85

这可能不符合您的具体情况,并不像添加小数和零那样简洁或简单。

: - )

See the Groovy Goodness

答案 2 :(得分:0)

这样的事情应该这样做:

def percentageFee = 285.0
percentageFee = percentageFee / 100
println percentageFee

结果为2.85