in reply to Perl is ignoring fractional part sometimes

With this change it works on my system (perl 5.24.0)

I'd guess it's something in the number/string duality in fetching values with -textvariable

sub calc { my $t = $scale; $xmax = $x * $t; $ymax = $y * $t; $results = sprintf("Calculated X-max=%8.4f, Y-Max=%8.4f",$xmax,$ymax +); print "$x, $y, $scale, $xmax, $ymax\n"; }

Replies are listed 'Best First'.
Re^2: Perl is ignoring fractional part sometimes
by jinnicky (Sexton) on Jul 18, 2016 at 03:01 UTC

    It doesn't change anything on perl 5.20.1. I tried:

    sub calc { my $t = $scale; $xmax = $x * $t; $ymax = $y * $t; $results = sprintf("Calculated X-max=%8.4f, Y-Max=%8.4f",$xmax,$ymax +); print " $x , $y , $scale , $t , $xmax , $ymax\n"; print "'$x','$y','$scale','$t','$xmax','$ymax'\n"; print join(', ',hexify($x),hexify($y),hexify($scale),hexify($t),hexi +fy($xmax),hexify($ymax))."\n\n"; } sub hexify { my $s = shift; $s =~ s/(.)/sprintf("%x ",ord($1))/eg; return $s; }

    The values all print out the same with the incorrect products. No extra characters whether I print $x or '$x' or the hexified version

    However, if I change the second line to: my $t = $scale.' '; it works!

    I can't really call it solved, since I don't know why it's doing this. But at least, I have a work-around to make my main program behave.