Làm cách nào để bạn đặt các chữ số có nghĩa trong python?

Làm tròn số trong Python khá phổ biến. Có thể xảy ra trường hợp các giá trị chỉ được làm tròn đến 3 chữ số thập phân hoặc một số tùy ý. Sử dụng hàm có sẵn round() rất tiện nhưng thay đổi giá trị ban đầu

Trong lớp hóa học ở trường đại học, tôi thường xuyên nghe và sử dụng thuật ngữ "số liệu quan trọng". Về cơ bản đề cập đến việc làm tròn một số thập phân lớn để chúng tôi chỉ bao gồm các chữ số phù hợp nhất

Các chữ số có nghĩa của một số trong ký hiệu vị trí là các chữ số trong số đáng tin cậy và hoàn toàn cần thiết để biểu thị số lượng của một thứ gì đó. Wikipedia

Ngoài "sig figs", làm tròn các giá trị thập phân đến một độ chính xác nhất định và xác định loại làm tròn xảy ra là khá quan trọng đối với các phép tính cực kỳ chính xác như trong phần mềm ngân hàng/tài chính

Làm thế nào để Python xử lý các số dấu phẩy động?

Python ở mức thấp nhất, được xây dựng trên C. Điều đó có nghĩa là khi các giá trị dấu phẩy động trải qua các phép toán, các giá trị đang được tính toán bằng C (đối với Python) được chuyển đổi thành phân số nhị phân chứ không phải số dấu phẩy động. Thật không may, các phân số không chính xác như các số dấu phẩy động. Khi bạn nhìn thấy một giá trị dấu phẩy động, hãy nhớ rằng đó thực sự là một (hoặc hai) phân số

Ở đâu đó trong các phép tính do C thực hiện, chúng tôi nhận thấy rằng một số dấu phẩy động đang bị mất, điều này không lý tưởng cho phần mềm tài chính có độ chính xác cao hoặc các ứng dụng khác. Python cung cấp cho chúng ta hàm round() tích hợp để làm tròn số dấu phẩy động (nhưng điều này làm thay đổi giá trị ban đầu và không chính xác nhất). Để có độ chính xác cao nhất, chúng tôi có thể sử dụng các gói như số thập phân để đảm bảo số dấu phẩy động cực kỳ chính xác

Một cách để nhanh chóng kiểm tra điều này cho chính bạn, là thử thực hiện một số thao tác trên hai giá trị thập phân bằng chữ. Nhảy vào REPL hoặc trình soạn thảo văn bản yêu thích của bạn để theo dõi

>>> 4.6 + 3.3
7.8999999999999995

Như chúng ta mong đợi, loại

>>> round(4.6 + 3.3, 1)
7.9
0 thực sự là một
>>> round(4.6 + 3.3, 1)
7.9
1. Nhưng điều hấp dẫn là thay vì 7. 9 đang được tính toán, ở đâu đó khi C tính toán các phân số nhị phân, chúng tôi mất khoảng 5 điểm và được cho giá trị
>>> round(4.6 + 3.3, 1)
7.9
2

Thuật ngữ cơ bản
  • 4. 6 + 3. 3 là một biểu thức
  • 4. 6 và 3. 3 là số float (toán hạng)
  • >>> round(4.6 + 3.3, 1)
    7.9
    3 là toán tử chia

Sử dụng hàm round() tích hợp sẵn, chúng tôi có thể đảm bảo giá trị được làm tròn thành

>>> round(4.6 + 3.3, 1)
7.9
5 số thập phân. Hãy nhớ rằng điều này không cực kỳ chính xác và làm thay đổi giá trị ban đầu, vì vậy các dấu phẩy động bị cắt bớt không còn được lưu trữ trong
>>> round(4.6 + 3.3, 1)
7.9
0 và giá trị mới là
>>> round(4.6 + 3.3, 1)
7.9
0

>>> round(4.6 + 3.3, 1)
7.9

Làm tròn mà không thay đổi giá trị ban đầu

Nếu chúng tôi không muốn thay đổi giá trị ban đầu bằng round(), thì một giải pháp thay thế tuyệt vời để định dạng đầu ra là

>>> round(4.6 + 3.3, 1)
7.9
2. Nó cho phép chúng tôi định dạng chuỗi đầu ra mà không thay đổi số dấu phẩy động ban đầu như round(). Điều này rất hữu ích khi bạn chỉ cần hiển thị đầu ra thập phân được làm tròn đến 15 chữ số thập phân mà không làm thay đổi giá trị ban đầu

Ghi chú. Đọc thêm về làm tròn/định dạng số thập phân trên StackOverflow

Ví dụ này trình bày cách hiển thị đầu ra số thập phân được làm tròn/định dạng

Bạn cũng có thể sử dụng chuỗi f, đây là cách nhanh hơn nhiều để định dạng chuỗi thay thế cho cách sử dụng

>>> round(4.6 + 3.3, 1)
7.9
2 viết tay. Chỉ cần đặt chữ cái
>>> round(4.6 + 3.3, 1)
7.9
6 trước chuỗi của bạn và sử dụng dấu ngoặc nhọn
>>> round(4.6 + 3.3, 1)
7.9
7 để nội suy các biến bên trong chuỗi giống như cách chúng ta thực hiện với cú pháp backticks và chuỗi nội suy
>>> round(4.6 + 3.3, 1)
7.9
8 trong JavaScript

Làm tròn độ chính xác cực cao

Nếu bạn đang xây dựng một hệ thống hoặc ứng dụng tài chính phức tạp đòi hỏi tính toán rất chính xác, thì sử dụng mô-đun thập phân sẽ là cách hành động được đề xuất. Các tài liệu Python cung cấp một ví dụ bắt đầu nhanh tuyệt vời cho bất kỳ ai quan tâm đến việc sử dụng mô-đun này để tính toán dấu phẩy động chính xác

Tầm quan trọng của Số thập phân mới chỉ được xác định bởi số lượng chữ số đầu vào. Độ chính xác của ngữ cảnh và làm tròn chỉ phát huy tác dụng trong các phép toán số học

Hãy ghi nhớ những điều trên khi đặt các giá trị cụ thể của

>>> round(4.6 + 3.3, 1)
7.9
9 cho bối cảnh mô-đun thập phân round()0. Chúng tôi tạo các giá trị round()1 mới trong đoạn mã ở trên và ý nghĩa được xác định bởi các chữ số được sử dụng làm đầu vào. Khi các phép toán số học được thực hiện, độ chính xác ngữ cảnh và làm tròn sẽ phát huy tác dụng

Còn nhiều điều nữa cần được khám phá trong mô-đun thập phân, nhưng tôi sẽ để việc đó cho bạn quyết định. Tôi hy vọng bài viết này làm sáng tỏ các số dấu phẩy động trong Python và các tùy chọn mà bạn có để xử lý các phép tính thập phân cực kỳ chính xác