Nombor Python, Penukaran Jenis dan Matematik

Dalam artikel ini, anda akan mengetahui tentang nombor berbeza yang digunakan dalam Python, cara menukar dari satu jenis data ke yang lain, dan operasi matematik yang disokong di Python.

Jenis Data Nombor di Python

Python menyokong nombor bulat, nombor terapung dan nombor kompleks. Ia ditakrifkan sebagai int, floatdan complexkelas dalam Python.

Bilangan bulat dan titik terapung dipisahkan dengan adanya atau ketiadaan titik perpuluhan. Contohnya, 5 adalah bilangan bulat sedangkan 5.0 adalah nombor titik terapung.

Nombor kompleks ditulis dalam bentuk, x + yjdi mana x adalah bahagian sebenar dan y adalah bahagian khayalan.

Kita boleh menggunakan type()fungsi untuk mengetahui kelas mana pemboleh ubah atau nilai dimiliki dan isinstance()berfungsi untuk memeriksa apakah itu tergolong dalam kelas tertentu.

Mari lihat contoh:

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

Apabila kita menjalankan program di atas, kita mendapat output berikut:

 (8 + 3j) Betul

Walaupun bilangan bulat boleh berukuran panjang, nombor titik terapung hanya tepat hingga 15 tempat perpuluhan (tempat ke-16 tidak tepat).

Nombor yang kita hadapi setiap hari adalah sistem nombor perpuluhan (asas 10). Tetapi pengaturcara komputer (pengaturcara umumnya tertanam) perlu bekerjasama dengan sistem nombor perduaan (asas 2), heksadesimal (asas 16) dan oktal (asas 8).

Di Python, kita dapat mewakili nombor-nombor ini dengan meletakkan awalan dengan tepat sebelum nombor tersebut. Jadual berikut menyenaraikan awalan ini.

Sistem Nombor Awalan
Perduaan '0b' atau '0B'
Oktal '0o' atau '0O'
Perenambelasan '0x' atau '0X'

Berikut adalah beberapa contoh

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

Semasa anda menjalankan program, outputnya adalah:

 107 253 13

Jenis Penukaran

Kita boleh menukar satu jenis nombor menjadi nombor yang lain. Ini juga dikenali sebagai paksaan.

Operasi seperti penambahan, penolakan memaksa bilangan bulat untuk mengapung secara tersirat (secara automatik), jika salah satu operasi adalah apungan.

 >>> 1 + 2.0 3.0

Kita dapat melihat di atas bahawa 1 (bilangan bulat) dipaksakan menjadi 1.0 (apungan) untuk penambahan dan hasilnya juga merupakan nombor titik terapung.

Kami juga dapat menggunakan fungsi bawaan seperti int(), float()dan complex()untuk menukar antara jenis secara eksplisit. Fungsi-fungsi ini bahkan boleh bertukar dari rentetan.

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

Semasa menukar dari terapung ke bilangan bulat, bilangannya dipotong (bahagian perpuluhan dikeluarkan).

Perpuluhan Python

Float kelas bawaan Python melakukan beberapa pengiraan yang mungkin memukau kami. Kita semua tahu bahawa jumlah 1.1 dan 2.2 adalah 3.3, tetapi Python nampaknya tidak setuju.

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

Apa yang sedang berlaku?

Ternyata nombor floating-point dilaksanakan dalam perkakasan komputer sebagai pecahan binari kerana komputer hanya memahami binari (0 dan 1). Oleh sebab ini, sebahagian besar pecahan perpuluhan yang kita tahu, tidak dapat disimpan dengan tepat di komputer kita.

Mari kita ambil contoh. Kita tidak dapat mewakili pecahan 1/3 sebagai nombor perpuluhan. Ini akan memberikan 0.33333333… yang panjangnya panjang, dan kita hanya dapat menghampirinya.

Ternyata pecahan perpuluhan 0.1 akan menghasilkan pecahan binari yang panjangnya berjumlah 0.000110011001100110011… dan komputer kita hanya menyimpan sebilangan kecilnya.

Ini hanya kira-kira 0.1 tetapi tidak akan sama. Oleh itu, itu adalah batasan perkakasan komputer kita dan bukan kesalahan dalam Python.

 >>> 1.1 + 2.2 3.3000000000000003

Untuk mengatasi masalah ini, kita dapat menggunakan modul perpuluhan yang disertakan dengan Python. Walaupun nombor titik terapung mempunyai ketepatan hingga 15 tempat perpuluhan, modul perpuluhan mempunyai ketepatan yang dapat diselesaikan pengguna.

Mari lihat perbezaannya:

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

Pengeluaran

 0.1 0.1000000000000000055511151231257827021181583404541015625

Modul ini digunakan semasa kita ingin menjalankan pengiraan perpuluhan seperti yang kita pelajari di sekolah.

Ia juga mengekalkan kepentingan. Kita tahu 25.50 kg lebih tepat daripada 25.5 kg kerana ia mempunyai dua tempat perpuluhan yang signifikan berbanding satu.

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

Pengeluaran

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

Apabila kita menjalankan program di atas, kita mendapat output seperti berikut. (Nilai mungkin berbeza kerana tingkah laku rawak)

 18 e ('c', 'e', ​​'d', 'b', 'a') 0.5682821194654443

Berikut adalah senarai penuh fungsi dan atribut yang terdapat dalam modul rawak Python.

Artikel menarik...