Beefy Boxes and Bandwidth Generously Provided by pair Networks
Welcome to the Monastery
 
PerlMonks  

Re: Rounding Issue in DateTime strftime?

by runrig (Abbot)
on Nov 14, 2011 at 18:23 UTC ( [id://937999]=note: print w/replies, xml ) Need Help??


in reply to Rounding Issue in DateTime strftime?

Update: Looks like bug is reported as rt://72416

Yes, looks like it's a bug due to rounding and not carrying over to the next unit. It looks harder to carry over rounded nanoseconds to seconds than to just truncate, so here's my not quite ideal but better than what it's doing now replacements for some methonds in DateTime.pm:

sub _format_nanosecs { my $self = shift; my $precision = @_ ? shift : 9; my $divide_by = 10**( 9 - $precision ); my $t = sprintf( '%0' . $precision . 'u', round( $self->{rd_nanosecs} / $divide_by ) ); return ( length($t) > $precision ) ? "9" x $precision : $t; }

Update: IMHO, this solution is better than my other fix which correctly rounds the fractions of a second and carries over to the seconds place. E.g., what if you are only printing out seconds and fractions (with strftime template "%S.%3N")? Would you rather see "59.999" or "00.000"? I think it's better to not let nanoseconds affect the rest of the units.

Replies are listed 'Best First'.
Re^2: Rounding Issue in DateTime strftime?
by SparkeyG (Curate) on Nov 14, 2011 at 19:03 UTC
    Yeah, I decided to go ahead and report the bug. As to the suggestion of truncating, wouldn't that revert rt://66744
      No, this only truncates if the nanoseconds round up to 1 second (assuming it works correctly).
        Sorry, I should read the code and not make assumption. Yes you are correct, but it doesn't do what is expected.
      I submitted a patch to rt://72416 to correctly round, but I'm not sure that rounding is better than truncating. Though either is better than what it is doing now :-)

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://937999]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others having a coffee break in the Monastery: (4)
As of 2024-04-26 05:54 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found