From: <th...@us...> - 2006-10-30 04:25:29
|
Revision: 1562 http://svn.sourceforge.net/pcgen/?rev=1562&view=rev Author: thpr Date: 2006-10-29 20:25:23 -0800 (Sun, 29 Oct 2006) Log Message: ----------- Performance improvement to BigDecimalHelper.trimBigDecimal Modified Paths: -------------- Trunk/pcgen/code/src/java/pcgen/util/BigDecimalHelper.java Modified: Trunk/pcgen/code/src/java/pcgen/util/BigDecimalHelper.java =================================================================== --- Trunk/pcgen/code/src/java/pcgen/util/BigDecimalHelper.java 2006-10-30 03:52:08 UTC (rev 1561) +++ Trunk/pcgen/code/src/java/pcgen/util/BigDecimalHelper.java 2006-10-30 04:25:23 UTC (rev 1562) @@ -57,24 +57,19 @@ // Java 1.5 will not throw an ArthmeticException if you change the // scale of 0.0 to 0, so it will keep going through the loop below // forever. To get around this we test for the special case here. - return n.setScale(0); + return ZERO; } - try - { - // loop until we catch an exception - while (n.scale()>0) - { - n = n.setScale(n.scale() - 1); - } - } - catch (ArithmeticException ignore) - { - // Not "real" error - // setScale() tried to eliminate a non-zero digit - } - - return n; + if (n.scale() <= 0) { + return n; + } + + BigDecimal stripped = n.stripTrailingZeros(); + if (stripped.scale() < 0) { + stripped = n.setScale(0); + } + + return stripped; } /** This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |