2012-03-20 17 views
5

Quiero mostrar el valor en dólares con dos dígitos después del punto decimal para indicar los centavos. En el programa a continuación, la salida es 23.24. Perl redondea los decimales. Cómo evitarlo Quiero que la salida sea 23.23.Lugares decimales truncados (no redondos) en sprintf?

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

¿Desea que siempre se trunque? – Schwern

+1

Calcula en centavos en lugar de dólares, y luego utiliza 'int' para truncar centavos fraccionarios. – tchrist

Respuesta

12
print int(23.2395*100)/100; # => 23.23 
+0

No es necesario el decoro 'printf' – Zaid

+0

Muchas gracias por la información – Arav

7

Math::Round tiene diferentes métodos de redondeo.

use Math::Round 'nlowmult'; 
print nlowmult(0.01, 23.2395); # 23.23 
+0

Muchas gracias por la información – Arav

Cuestiones relacionadas