Hướng dẫn how do you round to 4 decimal places in python? - làm thế nào để bạn làm tròn đến 4 chữ số thập phân trong python?
Hàm round(number, ndigits)5 trả về một số điểm nổi được làm tròn vào số số thập phân được chỉ định. Show Thí dụ
vòng () cú phápCú pháp của hàm round(number, ndigits)5 là: round(number, ndigits) tham số vòng ()Hàm round(number, ndigits)5 có hai tham số:
vòng () giá trị trả vềHàm vòng () trả về
Ví dụ 1: Làm thế nào vòng () hoạt động trong Python?
Đầu ra 10 11 6 Ví dụ 2: Vòng một số cho số lượng số thập phân đã cho
Đầu ra 2.67 2.67 Ví dụ 2: Vòng một số cho số lượng số thập phân đã cho: The behavior of round(number, ndigits)5 for floats can be surprising. Notice 2 gives 3 instead of the expected 4. This is not a bug: it's a result of the fact that most decimal fractions can't be represented exactly as a float.Lưu ý: Hành vi của round(number, ndigits)5 đối với phao có thể gây ngạc nhiên. Thông báo 2 cung cấp 3 thay vì dự kiến 4. Đây không phải là một lỗi: đó là kết quả của thực tế là hầu hết các phân số thập phân không thể được biểu diễn chính xác dưới dạng phao.2.67499999999999982236431605997495353221893310546875 Khi thập phân 5 được chuyển đổi thành số dấu phẩy động nhị phân, nó lại được thay thế bằng xấp xỉ nhị phân, có giá trị chính xác là:Do đó, nó được làm tròn xuống còn 2,67.
Đầu ra 2.67 2.68 Tôi cảm thấy buộc phải cung cấp một đối trọng với câu trả lời của Ashwini Chaudhary. Mặc dù xuất hiện, hình thức hai đối số của hàm 7 không làm tròn một con trăn nổi vào một số vị trí thập phân nhất định và nó thường không phải là giải pháp bạn muốn, ngay cả khi bạn nghĩ đó là. Hãy để tôi giải thích...Khả năng làm tròn (python) nổi vào một số vị trí thập phân là thứ thường được yêu cầu, nhưng hóa ra hiếm khi là những gì thực sự cần thiết. Câu trả lời đơn giản 8 là một thứ gây phiền toái hấp dẫn: có vẻ như nó làm những gì bạn muốn, nhưng nhờ thực tế là những chiếc phao Python được lưu trữ bên trong nhị phân, nó đang làm một cái gì đó khá tinh vi hơn. Xem xét ví dụ sau:
Với sự hiểu biết ngây thơ về những gì 7 làm, điều này có vẻ sai: Chắc chắn nó sẽ làm tròn lên đến 10 11 60 chứ không phải xuống 10 11 61? Để hiểu tại sao những hành vi như vậy không thể dựa vào, bạn cần đánh giá cao rằng trong khi điều này trông giống như một hoạt động thập phân đơn giản, nó không đơn giản. Vì vậy, đây là những gì thực sự xảy ra trong ví dụ trên. . Vì vậy, để có được từ số nguyên chữ gốc đến đầu ra được hiển thị, máy móc cơ bản đã thực hiện bốn chuyển đổi riêng biệt giữa các định dạng nhị phân và thập phân, hai theo mỗi hướng. Phá vỡ nó xuống (và với những từ chối thông thường về giả sử định dạng nhị phân của IEEE 754, các quy tắc tròn đến chay-crom-chay và IEEE 754):
Trong Python 2.7 và sau đó, chúng ta có tình huống dễ chịu rằng hai chuyển đổi trong bước 3 và 4 hủy bỏ nhau. Đó là do sự lựa chọn của Python về việc triển khai 6, tạo ra giá trị thập phân ngắn nhất được đảm bảo để làm tròn chính xác cho phao thực tế. Một hậu quả của lựa chọn đó là nếu bạn bắt đầu với bất kỳ số thập phân (không quá lớn, không quá nhỏ) với 15 hoặc ít hơn các chữ số có ý nghĩa thì phao tương ứng sẽ được hiển thị hiển thị các chữ số chính xác đó:round(number, ndigits)0 Thật không may, điều này làm tăng thêm ảo tưởng rằng Python đang lưu trữ các giá trị theo số thập phân. Không phải như vậy trong Python 2.6, mặc dù! Đây là ví dụ ban đầu được thực hiện trong Python 2.6: round(number, ndigits)1 Chúng tôi không chỉ làm tròn theo hướng ngược lại, nhận 10 11 60 thay vì 10 11 61, mà giá trị được hiển thị thậm chí không in là 10 11 60! Hành vi này đã gây ra nhiều báo cáo cho trình theo dõi lỗi Python dọc theo các dòng "Vòng bị phá vỡ!". Nhưng đó không phải là 7 bị hỏng, đó là kỳ vọng của người dùng. .Phiên bản ngắn: Nếu bạn đang sử dụng vòng hai đối số và bạn đang mong đợi hành vi có thể dự đoán được từ một xấp xỉ nhị phân đến một vòng thập phân của một xấp xỉ nhị phân với một trường hợp nửa thập phân, bạn đang gặp rắc rối. Vì vậy, đủ với cuộc tranh luận "hai đối số là xấu". Thay vào đó, bạn nên sử dụng cái gì? Có một vài khả năng, tùy thuộc vào những gì bạn đang cố gắng làm.
|