2017-11-10 4 views
1

コスト値を収集するGroovyスクリプトに変数があります。しかし値は91.7776766667として出てくるので、それを切り上げて91.8と表示させたい。どのように私はこれを行うには、以下のコードを変更することができますし、私は恐らくMath.round機能を実装するために苦労しています:groovyの大きなdeciamlでMath.roundを使用するには?

def testcost = jsongroups.xxx.cost.flatten().collect { new Math.round(BigDecimal (it)) } 

log.info testcost 

答えて

1

の代わりに恐らくMath.round()あなたが直接あなたの数にBigDecimal.setScale(規模、roundingMode)を使用することができます。

def testcost = jsongroups.options.cost.flatten().collect { new BigDecimal (it).setScale(1, RoundingMode.HALF_UP)} 
log.info testcost 

HALF_UPは、.01-0.04から.0と.05-.09から.1に丸められます。 HALF_EVENなどの他の丸めの可能性については、RoundingModeのJavaDocを参照してください。

0

Groovyの言語は、パラメータとして特定の小数点以下にご進数を丸めるに行くround()方法があります。

def decimalValue = (Double)91.7776766667 
println "Value upto two decimal places >>"+decimalValue.round(2) 

出力:

Value upto two decimal places >>91.78 
+0

JavaとGroovyのどちらのバージョンを使用していますか? 2.4.11 JVMの原因:1.8.0_131 groovy.lang.MissingMethodExceptionが発生しました:メソッドのシグネチャがありません:java.math.BigDecimal.round()は引数型に適用されます:(java.lang.Integer)values:[2]あなたのコードから – user1708042

+0

ちょっと、整数を丸めて、まずそれを 'Double'に変換して' round() 'しようとしています。私は上記の答えを変更してくださいチェックアウトしてください。 –

+0

詳細については、[link](http://mrhaki.blogspot.in/2010/01/groovy-goodness-round-and-truncate.html)を参照してください。 –

関連する問題