Skip Menu |
 

This queue is for tickets about the Math-BigInt CPAN distribution.

Report information
The Basics
Id: 104544
Status: new
Priority: 0/
Queue: Math-BigInt

People
Owner: Nobody in particular
Requestors: pjacklam [...] online.no
Cc:
AdminCc:

Bug Information
Severity: (no value)
Broken in: (no value)
Fixed in: (no value)



Subject: Rounding to a positive precision is off by one digit
Download (untitled) / with headers
text/plain 1.6k
Rounding to a positive precision seems to be off by one digit. I dug into the history, and discovered that this bug seems to have been introduced in the version of Math::BigFloat that shipped with perl 5.7.3. In the versions of Math::BigFloat that shipped with Perl up until Perl 5.7.1, a comment in the code says "round $x at the 10 to the $scale digit place". This is the common convention, although som swap the sign of $scale, so a higher value of $scale means higher precision. The behaviour matched the comment in the code, so $scale = 2 rounds to nearest 100, since 10**2 = 100: $ perl -I/path/to/perl-5.7.1/lib -MMath::BigFloat -wle 'print Math::BigFloat -> new("12345") -> ffround(2)' +123E+2 The version of Math::BigFloat that shipped with Perl 5.7.2 has a different comment saying "precision: round to the $Nth digit left (+$n) or right (-$n) from the '.'", which is not the same as "round $x at the 10 to the $scale digit place". The actual behaviour was unchanged, though: $ perl -I/path/to/perl-5.7.2/lib -MMath::BigFloat -wle 'print Math::BigFloat -> new("12345") -> ffround(2)' 12300 In the version of Math::BigFloat that shipped with Perl 5.7.3, the behaviour changed to match the comment "precision: round to the $Nth digit left (+$n) or right (-$n) from the '.'". Now a positive $scale really seems to mean "count digits to the left of the dot", so $scale = 2 means round to the second digit to the left of the dot: $ perl -I/path/to/perl-5.7.3/lib -MMath::BigFloat -wle 'print Math::BigFloat -> new("12345") -> ffround(2)' 12340 This has been the behaviour ever since. Did someone misunderstand what precision is, believing that the old behaviour was wrong?


This service is sponsored and maintained by Best Practical Solutions and runs on Perl.org infrastructure.

Please report any issues with rt.cpan.org to rt-cpan-admin@bestpractical.com.