On Sat, 11 Nov 2006 16:34:55 -0800, Chip Salzenberg (via RT) wrote > because the Perl sprintf test suite seems to think that the right value > for sprintf('%e',1) is "1e+00", but Win32 seems to return "1e+000" (note > the extra digit in the exponent). Is this true? If so, is it a bug? In > any case, how does the Perl test suite not fail on Win32?
It just drops the superfluous zero from the return value. Even if sprintf(">%e<", 1234.875) on win32 returns ">1.234875e+003<" here $y is ">1.234875e+03<" that comes to be equal to ">$result<". In this way these three-digit exponents are accepted. # Cf. perl-current/t/op/sprintf.t $x = sprintf(">$template<", @$data); substr($x, -1, 0) = $w if $w; # $x may have 3 exponent digits, not 2 my $y = $x; if ($y =~ s/([Ee][-+])0(\d)/$1$2/) { .......... } .......... if ($x eq ">$result<") { print "ok $i\n"; } elsif ($skip) { print "ok $i # skip $comment\n"; } elsif ($y eq ">$result<") # Some C libraries always give { # three-digit exponent print("ok $i # >$result< $x three-digit exponent accepted\n"); } Regards, SADAHIRO Tomoyuki