Почему sprintf в Perl неправильно округляет числа с плавающей точкой?
Я искал соглашение о округлении, используемое Perl 'встроенная функцияSprintf.
Я думал, что это делает нормальное округление (например, ROUND_HALF_UP как вДжава'Соглашение о режиме округления), но копание дальше доказало, что это неправильно:
> /usr/local/bin/perl5.10.1 -e 'print(sprintf("%.2f", shift @ARGV)."\n");' 0.335
0.34
> /usr/local/bin/perl5.10.1 -e 'print(sprintf("%.2f", shift @ARGV)."\n");' 1.335
1.33