我确信这是一个非常简单的问题,但我被困住了。我是Groovy的新手。
让我说我有:
Long percentageFee = 285
percentageFee = percentageFee / 100 //Display as 2.85%
我尝试了几种方法,将percentageFee
转换为double
等,但结果仍然只有2。
我必须弄错语法或其他东西。
答案 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
这可能不符合您的具体情况,并不像添加小数和零那样简洁或简单。
: - )
答案 2 :(得分:0)
这样的事情应该这样做:
def percentageFee = 285.0
percentageFee = percentageFee / 100
println percentageFee
结果为2.85