除算の結果には「%」が使えない
なんか訳のわからないエラーが出てテンパッて、解析してみたら大したことなかったという例。
クロージャの再帰処理とか初めて挑戦してる所で出くわしたので、原因突き詰めるのに時間かかっちゃいました orz
def i = 4 / 2 assert i.class == java.math.BigDecimal // ここで例外発生 def j = i % 2
Exception thrown 2011/08/03 0:51:26 org.codehaus.groovy.runtime.StackTraceUtils sanitize 警告: Sanitizing stacktrace: java.lang.UnsupportedOperationException: Cannot use mod() on this number type: java.math.BigDecimal with value: 2 at org.codehaus.groovy.runtime.typehandling.NumberMath.createUnsupportedException(NumberMath.java:254) (後略)
まとめると↓って事かな。
・除算の結果は「BigDecimal」
・BigDecimalにはmodメソッドがない(「%」が使用できない)
それぞれの事象が問題になることはないだろうけど、↑の例みたいに割った数を更に割って余りを得たい時には困るかも。
(そんな事やることないかもだけどw)