Author: fanningpj
Date: Thu Apr 14 17:01:51 2022
New Revision: 1899864
URL: http://svn.apache.org/viewvc?rev=1899864&view=rev
Log:
try to standardise big decimal code
Modified:
poi/trunk/poi/src/main/java/org/apache/poi/ss/usermodel/FractionFormat.java
Modified:
poi/trunk/poi/src/main/java/org/apache/poi/ss/usermodel/FractionFormat.java
URL:
http://svn.apache.org/viewvc/poi/trunk/poi/src/main/java/org/apache/poi/ss/usermodel/FractionFormat.java?rev=1899864&r1=1899863&r2=1899864&view=diff
==============================================================================
--- poi/trunk/poi/src/main/java/org/apache/poi/ss/usermodel/FractionFormat.java
(original)
+++ poi/trunk/poi/src/main/java/org/apache/poi/ss/usermodel/FractionFormat.java
Thu Apr 14 17:01:51 2022
@@ -106,12 +106,21 @@ public class FractionFormat extends Form
@SuppressWarnings("squid:S2111")
public String format(Number num) {
+ final double d = num.doubleValue();;
+ try {
+ //this is the recommended way (in BigDecimal javadocs to create a
decimal from a double)
+ return format(new BigDecimal(Double.toString(d)));
+ } catch (NumberFormatException nfe) {
+ //Double.toString can fail
+ return format(d);
+ }
+ }
- final BigDecimal doubleValue = new BigDecimal(num.doubleValue());
-
- final boolean isNeg = doubleValue.compareTo(BigDecimal.ZERO) < 0;
+ @SuppressWarnings("squid:S2111")
+ private String format(final BigDecimal decimal) {
+ final boolean isNeg = decimal.compareTo(BigDecimal.ZERO) < 0;
- final BigDecimal absValue = doubleValue.abs();
+ final BigDecimal absValue = decimal.abs();
final BigDecimal wholePart = new BigDecimal(absValue.toBigInteger());
final BigDecimal decPart = absValue.remainder(BigDecimal.ONE);
@@ -148,7 +157,7 @@ public class FractionFormat extends Form
}
} catch (RuntimeException e){
LOGGER.atWarn().withThrowable(e).log("Can't format fraction");
- return Double.toString(doubleValue.doubleValue());
+ return Double.toString(decimal.doubleValue());
}
StringBuilder sb = new StringBuilder();
@@ -184,10 +193,12 @@ public class FractionFormat extends Form
return sb.toString();
}
+ @Override
public StringBuffer format(Object obj, StringBuffer toAppendTo,
FieldPosition pos) {
return toAppendTo.append(format((Number)obj));
}
+ @Override
public Object parseObject(String source, ParsePosition pos) {
throw new NotImplementedException("Reverse parsing not supported");
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]