2010-01-25 8 views
8

Sto provando ad usare il modulo bignum in Perl e voglio impostare la precisione. So che questo può essere fatto tramite un uno di linea, come indicato alla module's CPAN page:Come posso impostare il livello di precisione per bignum di Perl?

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

... che stampare la radice quadrata di 20 a 50 cifre di precisione, ma quello che mi chiedo è se c'è comunque di impostare la precisione all'interno di uno script, vale a dire qualcosa come:

#!/usr/bin/perl 
use bignum; 

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

ho cercato qui intorno, Google, e PerlMonks senza fortuna finora. Grazie in anticipo. .

+5

Specificare come argomento per il pacchetto nella riga 'use bignum'. –

+4

Vedere 'perldoc perlrun'; 'perl -MPackage = foo, bar' equivale all'avvio del programma con' use Package qw (foo bar) '. – ephemient

+2

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

risposta

11

Per Anon del suggerimento:

#!/usr/bin/perl 

use strict; 
use warnings; 

use bignum (p => -50); 

print sqrt(20); 

come si potrebbe esaminare la documentazione per Math::BigFloat e Math::BigInt che bignum fa uso di.

+0

Perfetto, grazie ad entrambi Anon & You. – theraccoonbear

+1

Questo non funziona per me, Perl è sbagliato qui: 'perl -e 'usa bignum (p => - 100); printf ("% 1.50f \ n ", sqrt (23));" output ' 4.79583152331271911350540904095396399497985839843750' Questo è giusto: 'perl -Mbignum = p, -50 -le 'sqrt stampa (23)'' ' 4.79583152331271954159743806416269391999670704190413' rispetto al calcolo corretto da aC: ' echo "scale = 50; sqrt (23) "| bc' ' 4.79583152331271954159743806416269391999670704190412' –

Problemi correlati