Меня не интересовало соглашение об округлении, используемое встроенной функцией Perl sprintf.Почему спринт Perl не округляет числа с плавающей запятой правильно?
Я думал, что это делает обычный округление (например, ROUND_HALF_UP как в Java's rounding mode convention), но рыть дальше оказалось, что это не так:
> /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
печать (sprintf (...))? Интересно, есть ли «printf» ... – jrockway
Взгляните на [Perl Cookbook recipe 2.2 - округление чисел с плавающей запятой] (http://books.google.com/books?id=hP4IRp8xwTkC&pg=PA64&lpg=PA64&dq= округления + номер + Perl + поваренная книга и источник = бли & отс = ti7Tyxr3s7 & сиг = gyWX-iySyiVZef0vB43ZuIaxkuw & гл = еп & е = RPzrStmzO4z0MarIvKkI & са = Х & OI = book_result & кт = результат & resnum = 1 & веды = 0CAwQ6AEwAA # v = OnePage & д = & F = ложь) для более полного объяснения – heferav