Обрезать (не округлять) десятичные знаки в sprintf?

Я хочу отобразить стоимость в долларах с двумя цифрами после запятой для обозначения центов. В приведенной ниже программе вывод равен 23,24. Perl округляет десятичные разряды. Как этого избежать. Я хочу, чтобы на выходе было 23.23.

$val=23.2395;
$testa=sprintf("%.2f", $val);
print "\n$testa\n $val";

person Arav    schedule 20.03.2012    source источник
comment
Вы хотите, чтобы он всегда усекался?   -  person Schwern    schedule 20.03.2012
comment
Считайте в пенни вместо долларов, а затем используйте int для усечения дробных пенни.   -  person tchrist    schedule 20.03.2012


Ответы (2)


Math::Round имеет разные методы округления.

use Math::Round 'nlowmult';
print nlowmult( 0.01, 23.2395 ); # 23.23
person stevenl    schedule 20.03.2012

person    schedule
comment
Нет необходимости в printf приличиях - person Zaid; 20.03.2012