Skip to content
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

Fixes issue whereby scale 29 is required however is optimized away #619

Merged
merged 2 commits into from
Nov 10, 2023

Conversation

paupino
Copy link
Owner

@paupino paupino commented Nov 10, 2023

Fixes #618

Fixes an issue during add/subtract with a small number with scale 29. Effectively, what happened is that the number was able to be "aligned" within a 32 bit boundary however because it used scale 29 it was "optimized" away when reconstructing the decimal.

Scale 30, even though invalid, was ok since it continued scaling back until it reached a scale of 28. Scale 29 however effectively stopped scaling and was forced to 28 during reconstruction. This fix forces scale 29 to also be scaled down to scale 28 before reconstruction. The alternative solution would be to retain a scale of 29 however that could lead to subtly incorrect values (i.e. -0.09999999999999999999999999990 with the trailing zero). Since the decimal library constrains scale to 0 to 28 in most cases (rescaling is the exception) it makes sense to continue scaling to 28 during these calculations.

@paupino paupino merged commit 1686b69 into master Nov 10, 2023
5 checks passed
@paupino paupino deleted the issue/618 branch November 10, 2023 17:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
1 participant