Hướng dẫn dùng modun toán học pyhton năm 2024

Ngay cả những phép toán cơ bản nhất có thể đôi khi cho ra một kết quả sai. Điều này xảy ra do các hạn chế trong việc lưu trữ giá trị chính xác của một số. Bạn có thể vượt qua những hạn chế này bằng cách sử dụng mô-đun decimal trong Python. Tương tự, mô-đun math lẫn cmath mà chúng ta đã học được trong hướng dẫn trước của chúng tôi đều không thể giúp chúng ta thực hiện phép tính số học dựa theo phân số. Tuy nhiên, mô-đun fractions trong Python thực hiện chính xác điều đó.

Trong hướng dẫn này, bạn sẽ tìm hiểu về cả hai mô-đun này và các hàm khác nhau mà chúng cung cấp.

Tại sao Chúng ta Cần Mô-đun Decimal?

Có lẽ bạn sẽ tự hỏi tại sao chúng ta cần một mô-đun để thực hiện phép toán số học cơ bản với các số thập phân khi chúng ta có thể làm như vậy bằng cách sử dụng float.

Trước khi tôi trả lời câu hỏi này, tôi muốn bạn đoán về giá trị đầu ra nếu bạn gõ

2

54 trong giao diện console của Python. Nếu bạn đoán rằng đầu ra là

2

55, thì bạn sẽ ngạc nhiên khi bạn kiểm tra kết quả thực tế, đó là 0.30000000000000004. Bạn có thể thử một số phép tính khác như 0.05 + 0.1 và bạn sẽ nhận được 0.15000000000000002.

Để hiểu điều gì đang xảy ra ở đây, hãy cố gắng biểu diễn

2

56 ở dạng thập phân, và bạn sẽ nhận thấy rằng số này thật sự không dừng lại ở cơ số 10. Tương tự như vậy, một số số như 0.1 hoặc 1/10 không dừng lại ở cơ số 2. Vì những con số này vẫn cần phải được biểu diễn bằng cách nào đó, một số xấp xỉ được tạo ra khi lưu trữ chúng, dẫn đến những sai số đó.

Số 0.30000000000000004 thực sự rất gần với 0,3, do đó, phần lớn chúng ta có thể bỏ đi phần xấp xỉ này. Thật không may, phần xấp xỉ này sẽ không thể loại bỏ khi bạn đang mô phỏng một vụ phóng vệ tinh hoặc xử lý tiền. Một vấn đề khác với những xấp xỉ này là các lỗi vẫn tiếp tục tồn tại.

Để có được những kết quả chính xác mà chúng ta thường xử lý với chúng khi thực hiện các phép tính bằng tay, chúng ta cần một cái gì đó hỗ trợ tính toán số thập phân dấu chấm động một cách nhanh chóng, chính xác và mô-đun decimal thực hiện chính xác điều đó.

Sử dụng Mô-đun Decimal

Trước khi sử dụng mô-đun, bạn cần phải import nó trước. Sau đó, bạn có thể tạo các số thập phân từ các số nguyên, chuỗi, float, hoặc tuple. Khi số thập phân đã được cấu trúc từ một số nguyên hoặc một float, có một sự chuyển đổi chính xác của giá trị số đó. Hãy xem các ví dụ dưới đây để biết rõ tôi muốn nói gì:

1

from decimal import Decimal 2

3

Decimal(121) 4

returns Decimal('121')

5

from decimal import Decimal 0

from decimal import Decimal 1

from decimal import Decimal 2

from decimal import Decimal 3

from decimal import Decimal 4

from decimal import Decimal 6

from decimal import Decimal 7

from decimal import Decimal 8

from decimal import Decimal 9

2

0

2

2

2

3

2

4

2

5

2

6

2

8

2

9

0

1

Như bạn thấy, giá trị của

2

57 hơi khác so với

2

58. Điều này có nghĩa là khi bạn cộng 0.05 và 0.1, bạn nên sử dụng

2

59 và

2

60 để cấu trúc các số thập phân.

1

from decimal import Decimal 2

3

7

4

9

5

from decimal import Decimal 0

3

3

from decimal import Decimal 2

3

5

Bây giờ bạn có thể thực hiện các phép toán khác nhau trên các số thập phân, bạn có thể muốn kiểm soát độ chính xác hoặc làm tròn cho những phép toán đó. Điều này có thể được thực hiện bằng cách sử dụng hàm

2

61. Hàm này cho phép bạn lấy cũng như thiết lập giá trị của các tuỳ chọn chính xác và làm tròn, cùng với những thứ khác.

Xin lưu ý rằng cả làm tròn và độ chính xác chỉ có tác dụng trong các phép toán số học chứ không phải lúc bạn tự tạo ra bản thân các số thập phân.

1

3

7

2

3

9

3

4

Decimal(121) 3

5

Decimal(121) 5

from decimal import Decimal 0

from decimal import Decimal 2

Decimal(121) 9

from decimal import Decimal 4

from decimal import Decimal 6

4

3

from decimal import Decimal 8

4

5

2

0

2

2

4

9

2

4

returns Decimal('121')

1

2

6

2

8

returns Decimal('121')

5

0

returns Decimal('121')

8

4

9

5

0

5

1

5

2

Bạn cũng có thể sử dụng một số hàm toán học như

2

62,

2

63, và

2

64 với các số thập phân. Dưới đây là vài ví dụ:

1

3

7

2

3

9

3

4

1

5

3

from decimal import Decimal 0

from decimal import Decimal 2

7

from decimal import Decimal 4

from decimal import Decimal 6

from decimal import Decimal 01

from decimal import Decimal 8

from decimal import Decimal 03

2

0

2

2

from decimal import Decimal 07

2

4

from decimal import Decimal 09

Sử dụng Mô-đun Fractions

Đôi khi, bạn có thể phải đối mặt với những tình huống nơi mà bạn cần phải thực hiện các phép toán khác nhau trên phân số hoặc kết quả cuối cùng cần phải là một phân số. Mô-đun fractions có thể rất hữu ích trong những trường hợp này. Nó cho phép bạn tạo ra một đối tượng

2

65 từ các con số, số float, số thập phân, và thậm chí cả chuỗi. Cũng giống như mô-đun decimal, có một số vấn đề với mô-đun này cũng như khi nói đến việc tạo các phân số từ các số float. Dưới đây là vài ví dụ:

1

from decimal import Decimal 11

2

from decimal import Decimal 3

4

from decimal import Decimal 17

5

from decimal import Decimal 19

from decimal import Decimal 0

from decimal import Decimal 2

from decimal import Decimal 23

from decimal import Decimal 4

from decimal import Decimal 25

from decimal import Decimal 6

from decimal import Decimal 8

from decimal import Decimal 29

2

0

from decimal import Decimal 31

2

2

2

4

from decimal import Decimal 35

2

6

from decimal import Decimal 37

2

8

0

from decimal import Decimal 41

returns Decimal('121')

8

from decimal import Decimal 43

5

0

5

2

from decimal import Decimal 47

from decimal import Decimal 48

from decimal import Decimal 49

Bạn cũng có thể thực hiện các phép toán toán học đơn giản như cộng và trừ trên các phân số giống như số bình thường.

1

from decimal import Decimal 11

2

3

from decimal import Decimal 55

4

from decimal import Decimal 57

5

from decimal import Decimal 0

from decimal import Decimal 61

from decimal import Decimal 2

from decimal import Decimal 63

from decimal import Decimal 4

from decimal import Decimal 6

from decimal import Decimal 67

from decimal import Decimal 8

from decimal import Decimal 69

2

0

2

2

from decimal import Decimal 73

2

4

from decimal import Decimal 75

2

6

2

8

from decimal import Decimal 79

0

from decimal import Decimal 81

Mô-đun này cũng có một vài phương thức quan trọng như

2

66 sẽ tìm và trả về một phân số gần nhất với giá trị của một phân số nhất định có mẫu số lớn nhất là

2

67. Bạn cũng có thể trả về tử số của một phân số nhất định trong giới hạn thấp nhất bằng cách sử dụng thuộc tính

2

68 và mẫu số bằng cách sử dụng thuộc tính

2

69.

1

from decimal import Decimal 11

2

3

from decimal import Decimal 87

4

from decimal import Decimal 89

5

from decimal import Decimal 0

from decimal import Decimal 93

from decimal import Decimal 2

from decimal import Decimal 95

from decimal import Decimal 4

from decimal import Decimal 6

from decimal import Decimal 99

from decimal import Decimal 8

2

01

2

0

2

2

2

05

2

4

2

07

2

6

2

8

2

11

0

2

13

returns Decimal('121')

8

5

0

2

17

5

2

2

19

Bạn cũng có thể sử dụng mô-đun này với các hàm khác nhau trong mô-đun math để thực hiện các phép tính dựa trên phân số.

1

2

21

2

from decimal import Decimal 11

3

4

2

27

5

2

29

from decimal import Decimal 0

from decimal import Decimal 2

2

33

from decimal import Decimal 4

2

35

from decimal import Decimal 6

from decimal import Decimal 8

2

39

2

0

2

41

2

2

2

4

2

45

2

6

2

47

2

8

0

2

51

returns Decimal('121')

8

2

53

Tóm tắt

Hai mô-đun này chắc là đủ để giúp bạn thực hiện các phép toán thông thường trên cả số thập phân và phân số. Như trình bày trong phần cuối, bạn có thể sử dụng các mô-đun này cùng với mô-đun math để tính toán giá trị của tất cả các kiểu hàm toán học theo định dạng mà bạn mong muốn.