2010-01-25 26 views
8

Perl'deki bignum modülünü kullanmaya çalışıyorum ve hassasiyeti ayarlamak istiyorum. Bu module's CPAN page üzerinde detaylı bir astar aracılığıyla yapılabilir biliyorum: varsa kesinlik 20 ila 50 basamak karekökü çıktısını ama ne merak ediyorum olduğunu edecektirPerl'in bignum'u için hassasiyet seviyesini nasıl ayarlayabilirim?

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

... Bugüne kadar herhangi bir şans buralarda aradık

#!/usr/bin/perl 
use bignum; 

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

, Google ve PerlMonks: yine bir komut dosyası içinde hassasiyet, yani böyle bir şey ayarlamak için. Şimdiden teşekkürler. .

+5

'bignum' satırında pakete bir argüman olarak belirtin. –

+4

Bkz. “Perldoc perlrun”; 'perl -MPackage = foo, bar',' 'Package qw (foo bar)' kullanarak programı başlatmaya eşdeğerdir. – ephemient

+2

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

cevap

11

Başına Anon önerisi:

#!/usr/bin/perl 

use strict; 
use warnings; 

use bignum (p => -50); 

print sqrt(20); 

Sen Math::BigFloat ve bignum kullanır Math::BigInt için docs bakmak isteyebilirsiniz.

+0

Mükemmel, hem Anon & You sayesinde. – theraccoonbear

+1

Bu benim için çalışmıyor, Perl burada yanlış: 'perl -e 'bignum kullan (p => - 100); printf ("% 1.50f \ n ", sqrt (23));" çıktılar " 4.79583152331271911350540904095396399497985839843750' Bu doğru: 'perl -Mbignum p = -50 -le 'baskı sqrt (23)' 'bc doğru hesaplama ile karşılaştırıldığında' 4.79583152331271954159743806416269391999670704190413' : 'echo "ölçek = 50; sqrt (23) "| bc" , 4.79583152331271954159743806416269391999670704190412' –

İlgili konular