Bilangan Python, Konversi Jenis dan Matematika

Di artikel ini, Anda akan belajar tentang bilangan berbeda yang digunakan dalam Python, cara mengonversi dari satu tipe data ke tipe lainnya, dan operasi matematika yang didukung dengan Python.

Tipe Data Angka dengan Python

Python mendukung bilangan bulat, bilangan floating-point, dan bilangan kompleks. Mereka didefinisikan sebagai int, float, dan complexkelas dalam Python.

Bilangan bulat dan titik mengambang dipisahkan oleh ada atau tidaknya titik desimal. Misalnya, 5 adalah bilangan bulat sedangkan 5.0 adalah bilangan floating-point.

Bilangan kompleks ditulis dalam bentuk x + yj, di mana x adalah bagian nyata dan y adalah bagian imajiner.

Kita dapat menggunakan type()fungsi untuk mengetahui kelas mana dari suatu variabel atau nilai dan isinstance()fungsi untuk memeriksa apakah itu milik kelas tertentu.

Mari kita lihat contohnya:

 a = 5 print(type(a)) print(type(5.0)) c = 5 + 3j print(c + 3) print(isinstance(c, complex))

Ketika kami menjalankan program di atas, kami mendapatkan output berikut:

 (8 + 3j) Benar

Meskipun bilangan bulat dapat memiliki panjang berapa pun, angka floating-point hanya akurat hingga 15 tempat desimal (tempat ke-16 tidak akurat).

Angka-angka yang kita tangani setiap hari adalah dari sistem bilangan desimal (basis 10). Tetapi pemrogram komputer (umumnya pemrogram tertanam) perlu bekerja dengan sistem bilangan biner (basis 2), heksadesimal (basis 16) dan oktal (basis 8).

Dengan Python, kita bisa merepresentasikan angka-angka ini dengan menempatkan prefiks sebelum angka itu. Tabel berikut mencantumkan prefiks ini.

Sistem Angka Awalan
Biner '0b' atau '0B'
Oktal '0o' atau '0O'
Heksadesimal '0x' atau '0X'

Berikut ini beberapa contohnya

 # Output: 107 print(0b1101011) # Output: 253 (251 + 2) print(0xFB + 0b10) # Output: 13 print(0o15)

Saat Anda menjalankan program, hasilnya adalah:

 107 253 13

Ketik Konversi

Kita dapat mengubah satu jenis angka menjadi yang lain. Ini juga dikenal sebagai koersi.

Operasi seperti penjumlahan, pengurangan memaksa integer untuk mengapung secara implisit (otomatis), jika salah satu operan adalah float.

 >>> 1 + 2.0 3.0

Dapat kita lihat di atas bahwa 1 (integer) dipaksakan menjadi 1.0 (float) untuk penjumlahan dan hasilnya juga berupa bilangan floating point.

Kami juga dapat menggunakan fungsi bawaan seperti int(), float()dan complex()untuk mengonversi antar jenis secara eksplisit. Fungsi-fungsi ini bahkan dapat diubah dari string.

 >>> int(2.3) 2 >>> int(-2.8) -2 >>> float(5) 5.0 >>> complex('3+5j') (3+5j)

Saat mengonversi dari float ke integer, angkanya terpotong (bagian desimal dihapus).

Desimal Python

Float kelas built-in Python melakukan beberapa perhitungan yang mungkin membuat kita takjub. Kita semua tahu bahwa jumlah 1.1 dan 2.2 adalah 3.3, tetapi Python tampaknya tidak setuju.

 >>> (1.1 + 2.2) == 3.3 False

Apa yang sedang terjadi?

Ternyata bilangan floating-point diimplementasikan di perangkat keras komputer sebagai pecahan biner karena komputer hanya memahami biner (0 dan 1). Karena alasan ini, sebagian besar pecahan desimal yang kita ketahui tidak dapat disimpan secara akurat di komputer kita.

Mari kita ambil contoh. Kita tidak dapat merepresentasikan pecahan 1/3 sebagai angka desimal. Ini akan menghasilkan 0,33333333… yang merupakan panjang tak terhingga, dan kita hanya dapat memperkirakannya.

Ternyata pecahan desimal 0.1 akan menghasilkan pecahan biner yang sangat panjang dari 0.000110011001100110011… dan komputer kita hanya menyimpan sejumlah itu.

Ini hanya akan mendekati 0,1 tetapi tidak pernah sama. Karenanya, ini adalah batasan perangkat keras komputer kami dan bukan kesalahan dalam Python.

 >>> 1.1 + 2.2 3.3000000000000003

Untuk mengatasi masalah ini, kita dapat menggunakan modul desimal yang disertakan dengan Python. Sementara bilangan floating-point memiliki presisi hingga 15 tempat desimal, modul desimal memiliki presisi yang dapat diatur pengguna.

Mari kita lihat perbedaannya:

 import decimal print(0.1) print(decimal.Decimal(0.1))

Keluaran

 0,1 0,000000000000000055511151231257827021181583404541015625

Modul ini digunakan ketika kita ingin melakukan perhitungan desimal seperti yang kita pelajari di sekolah.

Itu juga mempertahankan signifikansi. Kami tahu 25,50 kg lebih akurat daripada 25,5 kg karena memiliki dua tempat desimal signifikan dibandingkan dengan satu.

 from decimal import Decimal as D print(D('1.1') + D('2.2')) print(D('1.2') * D('2.50'))

Keluaran

 3.3 3.000

Notice the trailing zeroes in the above example.

We might ask, why not implement Decimal every time, instead of float? The main reason is efficiency. Floating point operations are carried out must faster than Decimal operations.

When to use Decimal instead of float?

We generally use Decimal in the following cases.

  • When we are making financial applications that need exact decimal representation.
  • When we want to control the level of precision required.
  • When we want to implement the notion of significant decimal places.

Python Fractions

Python provides operations involving fractional numbers through its fractions module.

A fraction has a numerator and a denominator, both of which are integers. This module has support for rational number arithmetic.

We can create Fraction objects in various ways. Let's have a look at them.

 import fractions print(fractions.Fraction(1.5)) print(fractions.Fraction(5)) print(fractions.Fraction(1,3))

Output

 3/2 5 1/3

While creating Fraction from float, we might get some unusual results. This is due to the imperfect binary floating point number representation as discussed in the previous section.

Fortunately, Fraction allows us to instantiate with string as well. This is the preferred option when using decimal numbers.

 import fractions # As float # Output: 2476979795053773/2251799813685248 print(fractions.Fraction(1.1)) # As string # Output: 11/10 print(fractions.Fraction('1.1'))

Output

 2476979795053773/2251799813685248 11/10

This data type supports all basic operations. Here are a few examples.

 from fractions import Fraction as F print(F(1, 3) + F(1, 3)) print(1 / F(5, 6)) print(F(-3, 10)> 0) print(F(-3, 10) < 0)

Output

 2/3 6/5 False True

Python Mathematics

Python offers modules like math and random to carry out different mathematics like trigonometry, logarithms, probability and statistics, etc.

 import math print(math.pi) print(math.cos(math.pi)) print(math.exp(10)) print(math.log10(1000)) print(math.sinh(1)) print(math.factorial(6))

Output

 3.141592653589793 -1.0 22026.465794806718 3.0 1.1752011936438014 720

Here is the full list of functions and attributes available in the Python math module.

 import random print(random.randrange(10, 20)) x = ('a', 'b', 'c', 'd', 'e') # Get random choice print(random.choice(x)) # Shuffle x random.shuffle(x) # Print the shuffled x print(x) # Print random element print(random.random())

Ketika kita menjalankan program di atas, kita mendapatkan output sebagai berikut (Nilai mungkin berbeda karena perilaku acaknya)

 18 e ('c', 'e', ​​'d', 'b', 'a') 0,5682821194654443

Berikut adalah daftar lengkap dari fungsi dan atribut yang tersedia di modul acak Python.

Artikel yang menarik...