2010-01-25 13 views
8

Estoy tratando de usar el módulo bignum en Perl y quiero establecer la precisión. Sé que esto puede hacerse a través de un chiste que se detallan en el module's CPAN page:¿Cómo puedo establecer el nivel de precisión para el bignum de Perl?

$ perl -Mbignum=p,-50 -le 'print sqrt(20)' 

... que se imprima la raíz cuadrada de 20 a 50 dígitos de precisión, pero lo que me pregunto es si hay de todos modos para ajustar la precisión dentro de un script, es decir, algo así como:

#!/usr/bin/perl 
use bignum; 

setPrecision(-50); 
print sqrt(20); 

he buscado por aquí, Google y PerlMonks sin ninguna suerte hasta ahora. Gracias por adelantado. .

+5

Especifíquelo como un argumento para el paquete en la línea 'use bignum'. –

+4

Ver 'perldoc perlrun'; 'perl -MPackage = foo, bar' es equivalente a iniciar el programa con' use Package qw (foo bar) '. – ephemient

+2

Relacionados: http://stackoverflow.com/questions/1838808/how-do-i-set-the-floating-point-precision-in-perl –

Respuesta

11

por Anon de sugerencia:

#!/usr/bin/perl 

use strict; 
use warnings; 

use bignum (p => -50); 

print sqrt(20); 

que le gustaría mirar los documentos de Math::BigFloat y Math::BigInt, que hace uso de bignum.

+0

Perfecto, gracias tanto a Anon como a ti. – theraccoonbear

+1

Eso no me funciona, Perl está equivocado aquí: 'perl -e 'use bignum (p => - 100); printf ("% 1.50f \ n ", sqrt (23));' 'salidas ' 4.79583152331271911350540904095396399497985839843750' Esto es correcto: 'perl -Mbignum = p, -50 -LE 'sqrt de impresión (23)'' ' 4.79583152331271954159743806416269391999670704190413' en comparación con el cálculo correcto de BC: ' echo "escala = 50; sqrt (23) "| bc' ' 4.79583152331271954159743806416269391999670704190412' –

Cuestiones relacionadas