-
Notifications
You must be signed in to change notification settings - Fork 3.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ROUNDDOWN calculation #4213
Comments
These functions (ROUNDDOWN, ROUND, ROUNDUP, TRUNC) are tough to get right. We have many test cases, and continue to add to those as users like yourself report problems, or as we notice problems when Php changes (or will change) things. I will have to investigate what is going wrong here. |
oleibman
added a commit
to oleibman/PhpSpreadsheet
that referenced
this issue
Nov 5, 2024
Fix PHPOffice#4213. Early versions of Php 8.4 caused problems for some Excel functions, among them ROUNDDOWN and ROUNDUP. New code was added which seemed to work for 8.4 and all prior releases (back to 7.4). However, as the issue shows, there is a problem with the new logic that had not been a problem for prior releases (PhpSpreadsheet 1.29.1 with Php 8.3 or earlier). As it happens, some time after 8.4 broke the existing functionality, new features were added to it which enabled much cleaner logic. The code will now take this cleaner path when available, and revert to the older logic when not. This appears to work for all relevant Php releases, at least till the next non-match between PhpSpreadsheet and Excel is reported. And, having made the change to ROUNDDOWN, it occurred to me that ROUNDDOWN always returns the same result as TRUNC (they differ only in number of required arguments). So I changed TRUNC to call ROUNDDOWN, and that didn't break anything. So I will keep that change. This probably means I should change Calculation so that ROUNDDOWN is called automatically, and deprecate TRUNC. That can happen at a later time.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This is:
Hello,
I've found an issue with
ROUNDDOWN
usage (tested with 1.29.2, 3.3.0 versions. It is working for 1.29.1 version).I've read that results can be different with php8.4 but I'm using php8.3 right now.
Do I have to lock my phpoffice/phpspreadsheet version to 1.29.1 till I'm not using php8.4 ?
What is the expected behavior?
$calculation->calculateFormula('=ROUNDDOWN(249.9975,0)') // Should return 249
What is the current behavior?
$calculation->calculateFormula('=ROUNDDOWN(249.9975,0)') // Returns 250 with 1.29.2 and 3.3.0 versions
What are the steps to reproduce?
What features do you think are causing the issue
Which versions of PhpSpreadsheet and PHP are affected?
1.29.2 and 3.3.0 versions for php8.3
The text was updated successfully, but these errors were encountered: