commonsMathVersion = '3.6.1'
junitVersion = '5.9.0'
log4jVersion = '2.19.0'
- mockitoVersion = '4.9.0'
+ mockitoVersion = '4.10.0'
hamcrestVersion = '2.2'
xmlbeansVersion = '5.1.1'
batikVersion = '1.16'
<dependency prefix="main.jmhAnnotation" artifact="org.openjdk.jmh:jmh-generator-annprocess:1.35" usage="main-tests"/>
<dependency prefix="main.hamcrest" artifact="org.hamcrest:hamcrest:2.2" usage="main-tests"/>
<dependency prefix="main.xmlunit" artifact="org.xmlunit:xmlunit-core:2.9.0" usage="main-tests"/>
- <dependency prefix="main.mockito" artifact="org.mockito:mockito-core:4.9.0" usage="main-tests"/>
- <dependency prefix="main.byte-buddy" artifact="net.bytebuddy:byte-buddy:1.12.19" usage="main-tests"/>
- <dependency prefix="main.byte-buddy-agent" artifact="net.bytebuddy:byte-buddy-agent:1.12.19" usage="main-tests"/>
+ <dependency prefix="main.mockito" artifact="org.mockito:mockito-core:4.10.0" usage="main-tests"/>
+ <dependency prefix="main.byte-buddy" artifact="net.bytebuddy:byte-buddy:1.12.20" usage="main-tests"/>
+ <dependency prefix="main.byte-buddy-agent" artifact="net.bytebuddy:byte-buddy-agent:1.12.20" usage="main-tests"/>
<dependency prefix="main.objenesis" artifact="org.objenesis:objenesis:3.1" usage="main-tests"/>
<dependency prefix="main.log4j-core" artifact="org.apache.logging.log4j:log4j-core:2.19.0" usage="main-tests"/>
<dependency prefix="main.commons-logging" artifact="commons-logging:commons-logging:1.2" usage="main-tests"/>
}
dependencies {
- api 'net.bytebuddy:byte-buddy:1.12.19'
- api 'net.bytebuddy:byte-buddy-agent:1.12.19'
+ api 'net.bytebuddy:byte-buddy:1.12.20'
+ api 'net.bytebuddy:byte-buddy-agent:1.12.20'
api "org.apache.xmlbeans:xmlbeans:${xmlbeansVersion}"
}
if (d1 == 0.0) {
throw new EvaluationException(ErrorEval.DIV_ZERO);
}
- BigDecimal bd0 = new BigDecimal(NumberToTextConverter.toText(d0));
- BigDecimal bd1 = new BigDecimal(NumberToTextConverter.toText(d1));
- return bd0.divide(bd1, MathContext.DECIMAL128).doubleValue();
+ BigDecimal bd0 = new BigDecimal(d0);
+ BigDecimal bd1 = new BigDecimal(d1);
+ BigDecimal result = bd0.divide(bd1, MathContext.DECIMAL128);
+ return Double.parseDouble(NumberToTextConverter.toText(result.doubleValue()));
}
};
public static final Function MultiplyEval = new TwoOperandNumericOperation() {
@Override
protected double evaluate(double d0, double d1) {
- BigDecimal bd0 = new BigDecimal(NumberToTextConverter.toText(d0));
- BigDecimal bd1 = new BigDecimal(NumberToTextConverter.toText(d1));
- return bd0.multiply(bd1).doubleValue();
+ BigDecimal bd0 = new BigDecimal(d0);
+ BigDecimal bd1 = new BigDecimal(d1);
+ BigDecimal result = bd0.multiply(bd1);
+ return Double.parseDouble(NumberToTextConverter.toText(result.doubleValue()));
}
};
public static final Function PowerEval = new TwoOperandNumericOperation() {
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
+import java.io.IOException;
import java.util.Locale;
import static org.apache.poi.ss.util.Utils.assertDouble;
assertDouble(fe, cell, "INT(880000000*0.00849/3)", 2490400.0, 0);
}
+ @Test
+ void testMultiply() throws IOException {
+ try (HSSFWorkbook wb = new HSSFWorkbook()) {
+ HSSFCell cell = wb.createSheet().createRow(0).createCell(0);
+ HSSFFormulaEvaluator fe = new HSSFFormulaEvaluator(wb);
+ assertDouble(fe, cell, "1.2*SQRT(5.678)", 2.85942651592937, 0);
+ }
+ }
+
@Test
void testSIGN() {
HSSFWorkbook wb = new HSSFWorkbook();