2010-01-25 38 views
8

Tôi đang cố gắng sử dụng mô-đun bignum trong Perl và muốn đặt độ chính xác. Tôi biết điều này có thể được thực hiện thông qua một liner như chi tiết về module's CPAN page:Làm thế nào tôi có thể thiết lập mức độ chính xác cho bignum của Perl?

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

... mà sẽ in ra căn bậc hai của 20 đến 50 chữ số chính xác, nhưng những gì tôi đang tự hỏi là nếu có để đặt độ chính xác trong một tập lệnh, ví dụ:

#!/usr/bin/perl 
use bignum; 

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

Tôi đã tìm kiếm ở đây, Google và PerlMonks mà không có bất kỳ may mắn nào cho đến nay. Cảm ơn trước. .

+5

Chỉ định nó làm đối số cho gói trong dòng 'use bignum'. –

+4

Xem 'perldoc perlrun'; 'perl -MPackage = foo, bar' tương đương với khởi động chương trình với' sử dụng Gói qw (thanh foo) '. – ephemient

+2

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

Trả lời

11

mỗi Anon của đề nghị:

#!/usr/bin/perl 

use strict; 
use warnings; 

use bignum (p => -50); 

print sqrt(20); 

Bạn có thể muốn nhìn vào tài liệu cho Math::BigFloatMath::BigInt mà bignum tận dụng.

+0

Hoàn hảo, nhờ cả Anon & You. – theraccoonbear

+1

Điều đó không hiệu quả đối với tôi, Perl là sai ở đây: 'perl -e 'sử dụng bignum (p => - 100); printf ("% 1.50f \ n ", sqrt (23));'' kết quả đầu ra ' 4.79583152331271911350540904095396399497985839843750' này là đúng: 'perl -Mbignum = p, -50 -le 'in sqrt (23)' ' ' 4.79583152331271954159743806416269391999670704190413' so với tính toán đúng từ bc: 'echo "quy mô = 50; sqrt (23) "| bc' ' 4.79583152331271954159743806416269391999670704190412' –

Các vấn đề liên quan