mirror of https://github.com/apache/poi.git
try to standardise big decimal code
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1899864 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
6f50fb1bf7
commit
31cce15e22
|
@ -106,12 +106,21 @@ public class FractionFormat extends Format {
|
||||||
|
|
||||||
@SuppressWarnings("squid:S2111")
|
@SuppressWarnings("squid:S2111")
|
||||||
public String format(Number num) {
|
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());
|
@SuppressWarnings("squid:S2111")
|
||||||
|
private String format(final BigDecimal decimal) {
|
||||||
|
final boolean isNeg = decimal.compareTo(BigDecimal.ZERO) < 0;
|
||||||
|
|
||||||
final boolean isNeg = doubleValue.compareTo(BigDecimal.ZERO) < 0;
|
final BigDecimal absValue = decimal.abs();
|
||||||
|
|
||||||
final BigDecimal absValue = doubleValue.abs();
|
|
||||||
final BigDecimal wholePart = new BigDecimal(absValue.toBigInteger());
|
final BigDecimal wholePart = new BigDecimal(absValue.toBigInteger());
|
||||||
final BigDecimal decPart = absValue.remainder(BigDecimal.ONE);
|
final BigDecimal decPart = absValue.remainder(BigDecimal.ONE);
|
||||||
|
|
||||||
|
@ -148,7 +157,7 @@ public class FractionFormat extends Format {
|
||||||
}
|
}
|
||||||
} catch (RuntimeException e){
|
} catch (RuntimeException e){
|
||||||
LOGGER.atWarn().withThrowable(e).log("Can't format fraction");
|
LOGGER.atWarn().withThrowable(e).log("Can't format fraction");
|
||||||
return Double.toString(doubleValue.doubleValue());
|
return Double.toString(decimal.doubleValue());
|
||||||
}
|
}
|
||||||
|
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
|
@ -184,10 +193,12 @@ public class FractionFormat extends Format {
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public StringBuffer format(Object obj, StringBuffer toAppendTo, FieldPosition pos) {
|
public StringBuffer format(Object obj, StringBuffer toAppendTo, FieldPosition pos) {
|
||||||
return toAppendTo.append(format((Number)obj));
|
return toAppendTo.append(format((Number)obj));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public Object parseObject(String source, ParsePosition pos) {
|
public Object parseObject(String source, ParsePosition pos) {
|
||||||
throw new NotImplementedException("Reverse parsing not supported");
|
throw new NotImplementedException("Reverse parsing not supported");
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue