Почему 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

Ответы на вопрос(2)

Ваш ответ на вопрос