Menguasai Angka, Konversi Tipe, dan Matematika di Python
Menguasai Angka, Konversi Tipe, dan Matematika di Python
Temukan bagaimana Python menangani data numerik, nuansa konversi tipe, dan utilitas matematika yang kuat untuk pemrograman sehari-hari.
Tipe Data Angka di Python
Python mengategorikan angka ke dalam tiga tipe inti: int untuk bilangan bulat, float untuk bilangan real dengan bagian pecahan, dan complex untuk bilangan dengan bagian real dan imajiner. Kehadiran titik desimal membedakan int dari float (misalnya, 5 adalah bilangan bulat, 5.0 adalah float). Bilangan kompleks mengikuti notasi x + yj, di mana x adalah bagian real dan y adalah bagian imajiner.
Gunakan type() untuk memeriksa kelas suatu nilai dan isinstance() untuk memverifikasi keanggotaan dalam tipe tertentu. Misalnya:
a = 5
print(type(a))
print(type(5.0))
c = 5 + 3j
print(c + 3)
print(isinstance(c, complex))
Keluaran:
<class 'int'> <class 'float'> (8+3j) True
Bilangan bulat di Python memiliki presisi arbitrer; float mempertahankan sekitar 15 digit desimal akurasi. Untuk pengembang yang bekerja dengan representasi biner, heksadesimal, atau oktal, Python menawarkan awalan yang nyaman:
| Sistem Bilangan | Awalan |
|---|
| Biner | 0b atau 0B |
| Oktal | 0o atau 0O |
| Heksadesimal | 0x atau 0X |
Contoh:
# Output: 107
print(0b1101011)
# Output: 253 (251 + 2)
print(0xFB + 0b10)
# Output: 13
print(0o15)
Hasil:
107 253 13
Konversi Tipe (Coercion)
Python secara otomatis mempromosikan bilangan bulat menjadi float selama aritmetika jika operand float terlibat. Misalnya:
>>> 1 + 2.0
3.0
Konversi eksplisit sama sederhananya dengan int(), float(), dan complex(), yang juga dapat mengurai string:
>>> int(2.3)
2
>>> int(-2.8)
-2
>>> float(5)
5.0
>>> complex('3+5j')
(3+5j)
Saat mengonversi float ke int, Python memotong bagian desimal alih-alih membulatkan.
Decimal Python
Aritmetika titik terapung dapat menghasilkan hasil yang mengejutkan karena batas representasi biner. Misalnya:
>>> (1.1 + 2.2) == 3.3
False
Karena angka seperti 0.1 tidak dapat direpresentasikan secara tepat dalam biner, operasi menghasilkan error pembulatan kecil. Modul decimal mengatasi hal ini dengan menyediakan aritmetika desimal presisi arbitrer:
import decimal
print(0.1)
print(decimal.Decimal(0.1))
Keluaran:
0.1 0.1000000000000000055511151231257827021181583404541015625
Menggunakan Decimal mempertahankan digit signifikan dan representasi desimal yang tepat, penting untuk perhitungan keuangan:
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
Karena operasi decimal lebih lambat dari biner float, simpan Decimal untuk skenario yang memerlukan presisi tepat, seperti nilai moneter, presisi yang dapat dikonfigurasi, atau pengendalian digit signifikan.
Kapan Menggunakan Decimal Alih-alih Float?
- Aplikasi keuangan atau moneter yang menuntut representasi desimal tepat.
- Skenario di mana presisi harus dikontrol secara eksplisit.
- Aplikasi yang memerlukan konsep tempat desimal signifikan.
Pecahan Python
Modul fractions menawarkan dukungan bilangan rasional, memungkinkan aritmetika tepat dengan pembilang dan penyebut sebagai bilangan bulat:
import fractions
print(fractions.Fraction(1.5))
print(fractions.Fraction(5))
print(fractions.Fraction(1,3))
Keluaran:
3/2 5 1/3
Membuat Fraction dari float dapat menghasilkan hasil yang tidak intuitif karena pembulatan biner, jadi gunakan masukan string untuk bilangan desimal:
import fractions
# Dari float
print(fractions.Fraction(1.1))
# Dari string
print(fractions.Fraction('1.1'))
Keluaran:
2476979795053773/2251799813685248 11/10
Pecahan mendukung semua operator aritmetika:
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)
Keluaran:
2/3 6/5 False True
Matematika Python
Modul math Python menyediakan fungsi untuk trigonometri, logaritma, faktorial, dan lebih banyak:
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))
Keluaran:
3.141592653589793 -1.0 22026.465794806718 3.0 1.1752011936438014 720
Untuk keacakan dan pengambilan sampel, modul random menawarkan:
import random
print(random.randrange(10, 20))
x = ['a', 'b', 'c', 'd', 'e']
print(random.choice(x))
random.shuffle(x)
print(x)
print(random.random())
Contoh keluaran (nilai bervariasi):
18 e ['c', 'e', 'd', 'b', 'a'] 0.5682821194654443
Kedua modul menyediakan dokumentasi komprehensif yang menjelaskan semua fungsi dan atribut yang tersedia.