Bug 62839

Summary: MathX.floor for negative n
Product: POI Reporter: Sven <poi>
Component: SS CommonAssignee: POI Developers List <dev>
Status: RESOLVED FIXED    
Severity: normal    
Priority: P2    
Version: 4.0.0-FINAL   
Target Milestone: ---   
Hardware: PC   
OS: Linux   

Description Sven 2018-10-19 16:00:15 UTC
Behavior in LibreOffice / Excel:
The result of function call FLOOR.XCL(-123;10) in LibreOffice 6.1.2.1 is -130.
The result in Excel Office 365 is also -130.
The result in POI 4.0.0 via cell.getNumericCellValue() is -130.0.

Problem:
The result of new DataFormatter().formatCellValue(cell, formulaEvaluator) is #NUM!.

Expected result:
I suppose that the result in POI also should be -130.

Idea for improvement:
Remove the condition (n<0 && s>0) in the if-statement in org.apache.poi.ss.formula.functions.MathX.floor(double, double) 

And I suggest that the condition (s==0 && n!=0) in org.apache.poi.ss.formula.functions.MathX.floor(double, double) could be removed also. Excel returns 0 for floor(0;10) and LibreOffice also returns 0.

I guess that org.apache.poi.ss.formula.functions.MathX.ceiling(double, double) has already been changed this way, because the docs tell about negative n, but the if-statement does not check that.
Comment 1 Dominik Stadler 2018-12-26 13:37:28 UTC
Fixed via r1849764.
Comment 2 Sven 2018-12-28 07:08:44 UTC
Thank you! :-)