Làm tròn con số trong Perl

Perl ngôn ngữ có rất nhiều cách làm thế nào bạn có thể vòng một số một số nguyên.

Tùy thuộc vào những gì các bạn cần để cuối cùng cần phải sử dụng những phương pháp khác nhau. Khi lựa chọn các phương pháp của làm tròn nên chú ý đến cách cần tròn các số âm.

Đây là một bảng đó cho thấy kết quả của các phương pháp của làm tròn. Tất cả những phương pháp để làm tròn có sẵn trong Perl ra khỏi hộp, nếu bạn có Perl, bạn có thể sử dụng bất kỳ của các phương pháp.

                        -1.8  -1.5  -1.2   0     1.2   1.5   1.8
.................................................................
int($x)                 -1    -1    -1     0     1     1     1
POSIX::floor($x)        -2    -2    -2     0     1     1     1
int($x + 0.5)           -1    -1     0     0     1     2     2
sprintf('%.0f', $x)     -2    -2    -1     0     1     2     2
POSIX::ceil($x)         -1    -1    -1     0     2     2     2

(Bàn này đã tạo ra sử dụng mã https://PerlBanjo.com/bf555d3112 ).

  • int($x) — các phân phần là bỏ đi
  • POSIX::floor($x) — luôn luôn vòng xuống
  • int($x + 0.5) — cho số tích cực làm việc trên những quy tắc của toán học tròn, và số âm đưa ra một số vô nghĩa
  • sprintf('%.0f', $x) — làm việc theo quy tắc của toán học làm tròn cho tích cực, và các số âm.
  • POSIX::ceil($x) — luôn luôn vòng lên

Làm tròn một vài chữ số thập phân

Một trong những cách làm thế nào để vòng một số để vài chữ số thập phân trong Perl để sử dụng nó sprintf("%.2f", $x).

Số trong %.2f có nghĩa là bao nhiêu bạn cần phải rời khỏi sau chữ số thập phân điểm. Đây là một ví dụ mã:

▶ Run
#!/usr/bin/perl

use feature qw(say);
use Math::Trig;

say sprintf("%.0f", pi());
say sprintf("%.1f", pi());
say sprintf("%.2f", pi());
say sprintf("%.3f", pi());
say sprintf("%.4f", pi());
say sprintf("%.5f", pi());

Kết quả:

3
3.1
3.14
3.142
3.1416
3.14159

Cách làm tròn trong phiên bản mới của Perl

Bắt đầu từ trong Perl 5.22 trong các tiêu chuẩn phân phối của Perl tính năng thực hiện POSIX::trunc()POSIX::round(), và từ Perl 5.24 các chức năng của POSIX::lround(). Đây là bàn với kết quả của tất cả những cách (https://PerlBanjo.com/4314405cde ):

                        -1.8  -1.5  -1.2   0     1.2   1.5   1.8
.................................................................
int($x)                 -1    -1    -1     0     1     1     1
POSIX::trunc($x)        -1    -1    -1     0     1     1     1
POSIX::floor($x)        -2    -2    -2     0     1     1     1
int($x + 0.5)           -1    -1     0     0     1     2     2
POSIX::round($x)        -2    -2    -1     0     1     2     2
POSIX::lround($x)       -2    -2    -1     0     1     2     2
sprintf('%.0f', $x)     -2    -2    -1     0     1     2     2
POSIX::ceil($x)         -1    -1    -1     0     2     2     2

Kết quả POSIX::trunc($x) trong bảng này là giống như int($x). Và chính xác cùng một kết quả POSIX::round($x)POSIX::lround($x) trong bảng này chính xác giống như sprintf('%.0f', $x).

Các bài viết khác