Функция продукта poi выдает неожиданное приближенное значение с плавающей запятой

Я использую версию Apache Poi 3.10-FINAL, чтобы прочитать пару значений ячеек и умножить.

Я умножаю две ячейки, каждая со значением 38,15 и 199,1, но результат равен 7595,664999999999 вместо 7595,67.

можно ли это исправить?

        is = new FileInputStream("V5.xlsx");
        XSSFWorkbook  wb = new XSSFWorkbook(is);
        XSSFDataFormat format = wb.createDataFormat();
        XSSFSheet  sheet = wb.getSheet("Sample Test");
        CreationHelper helper = wb.getCreationHelper();
        FormulaEvaluator formulaEval = helper.createFormulaEvaluator(); 

        Cell cell1 = sheet.getRow(2).getCell(1);
        Cell cell2 = sheet.getRow(2).getCell(2);
        cell1.setCellValue("199.1");
        cell2.setCellValue("38.15");

        sheet.getRow(2).getCell(3).setCellFormula("B3*C3");

        System.out.println(formulaEval.evaluate(sheet.getRow(2).getCell(3)));

1 ответ

Вопрос с

Пакет: org.apache.poi.ss.formula.eval Класс: TwoOperandNumericOperation

public static final Function MultiplyEval = new TwoOperandNumericOperation() {
        protected double evaluate(double d0, double d1) {
            return d0*d1;
        }
    };
Другие вопросы по тегам