2014-02-14 23 views
3

我確定這是一個非常簡單的問題,但我被卡住了。我是Groovy的新手。在Groovy部門顯示小數

比方說,我有:

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

我已經試過這幾種方式,鑄造percentageFeedouble,等等,但結果依然只是2

我一定是語法錯誤或者其他的東西。

回答

5

如果添加一個小數位兩個操作數之一,那麼它是不是整數除法了:

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

這裏100.0是一個BigDecimal。

如果這是Java,那麼將long與整數相乘會導致long。但在Groovy中,它並不像那樣工作。除法運算返回一個BigDecimal,結果賦給一個長截斷結果:(感謝blackdrag的澄清)

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

+0

加法...的顯示代碼工作正常,但他沒有這樣做整數等分。他只得到2的原因是他將結果分配給了PercentFee,這是一個Long。這將導致由devision創建的BigDecimal被轉換爲Long,因此他會丟失點背後的所有部分。不使用類型可以解決問題。使用例如double(或Float或BigDecimal)for percentageFee也可以解決它 – blackdrag

+0

@blackdrag:非常好的一點,編輯包含此,謝謝 –

0

像這樣的東西應該這樣做:

def percentageFee = 285.0 
percentageFee = percentageFee/100 
println percentageFee 

結果是2.85

0

您還可以通過更「Groovy」的方式來做到這一點,充分利用Groovy的優勢groovy - 動態類型變量。

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

這可能不適合您的具體情況,並不像添加小數和零那樣簡潔或簡單。

:-)

See the Groovy Goodness