Pembulatan angka di Perl

Dalam bahasa pemrograman Perl ada beberapa cara bagaimana anda dapat membulatkan suatu bilangan ke bilangan bulat.

Tergantung pada apa yang anda butuhkan untuk pada akhirnya perlu menggunakan metode yang berbeda. Ketika memilih metode pembulatan harus memperhatikan bagaimana kebutuhan bulat negatif bilangan.

Berikut ini adalah tabel yang menunjukkan hasil dari metode yang berbeda dari pembulatan. Semua metode ini untuk pembulatan tersedia di Perl out of the box, jika anda memiliki Perl, anda dapat menggunakan salah satu metode ini.

                        -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

(Tabel ini dibuat menggunakan kode https://PerlBanjo.com/bf555d3112 ).

  • int($x) — bagian pecahan dibuang
  • POSIX::floor($x) — selalu putaran bawah
  • int($x + 0.5) — untuk angka positif bekerja pada aturan pembulatan matematika, dan angka negatif memberikan beberapa omong kosong
  • sprintf('%.0f', $x) — bekerja dengan aturan pembulatan matematika untuk bilangan positif dan negatif.
  • POSIX::ceil($x) — selalu putaran atas

Pembulatan ke beberapa tempat desimal

Salah satu cara bagaimana untuk membulatkan suatu bilangan ke beberapa tempat desimal di Perl untuk menggunakannya sprintf("%.2f", $x).

Jumlah di %.2f berarti berapa banyak yang anda butuhkan untuk meninggalkan digit setelah titik desimal. Berikut adalah contoh kode:

▶ 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());

Hasilnya:

3
3.1
3.14
3.142
3.1416
3.14159

Cara pembulatan dalam versi yang lebih baru dari Perl

Mulai di Perl 5.22 dalam distribusi standar Perl fitur diimplementasikan POSIX::trunc() dan POSIX::round(), dan dari Perl 5.24 fungsi POSIX::lround(). Berikut ini adalah tabel dengan hasil dari semua cara (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

Hasil POSIX::trunc($x) dalam tabel ini sama seperti int($x). Dan hasil yang sama POSIX::round($x) dan POSIX::lround($x) dalam tabel ini persis sama seperti sprintf('%.0f', $x).

Artikel lainnya