groovy中默认的bigdecimal标度
groovy中BigDecimal的默认比例是多少?和舍入?
所以在尝试进行计算时: def x = 10.0/30.0 //0.3333333333 def y = 20.0/30.0 //0.6666666667 基于此,我可以假设它使用了比例10并且舍入了一半. 解决方法
您可以在官方文档中找到它:
The case of the division operator
并在 public Number divideImpl(Number left,Number right) { BigDecimal bigLeft = toBigDecimal(left); BigDecimal bigRight = toBigDecimal(right); try { return bigLeft.divide(bigRight); } catch (ArithmeticException e) { // set a DEFAULT precision if otherwise non-terminating int precision = Math.max(bigLeft.precision(),bigRight.precision()) + DIVISION_EXTRA_PRECISION; BigDecimal result = bigLeft.divide(bigRight,new MathContext(precision)); int scale = Math.max(Math.max(bigLeft.scale(),bigRight.scale()),DIVISION_MIN_SCALE); if (result.scale() > scale) result = result.setScale(scale,BigDecimal.ROUND_HALF_UP); return result; } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |