Helpex - Trao đổi & giúp đỡ Đăng nhập
6

Bất cứ ai có thể giải thích cho tôi đoạn mã này:

>>> round(0.45, 1)
0.5
>>> round(1.45, 1)
1.4
>>> round(2.45, 1)
2.5
>>> round(3.45, 1)
3.5
>>> round(4.45, 1)
4.5
>>> round(5.45, 1)
5.5
>>> round(6.45, 1)
6.5
>>> round(7.45, 1)
7.5
>>> round(8.45, 1)
8.4
>>> round(9.45, 1)
9.4

Đã cập nhật

Tôi đoán đó là do đại diện nổi. Tôi nói đúng chứ?

6 hữu ích 3 bình luận 5.4k xem chia sẻ
8

Bạn đúng rồi. Không có con số nào có thể được biểu diễn chính xác. Trong một số trường hợp, phần phân số lớn hơn 0.45và trong một số trường hợp, phần này nhỏ hơn:

In [4]: ['%.20f' % val for val in (0.45, 1.45, 2.45, 3.45, 4.45, 5.45, 6.45, 7.45, 8.45, 9.45)]
Out[4]: 
['0.45000000000000001110',
 '1.44999999999999995559',
 '2.45000000000000017764',
 '3.45000000000000017764',
 '4.45000000000000017764',
 '5.45000000000000017764',
 '6.45000000000000017764',
 '7.45000000000000017764',
 '8.44999999999999928946',
 '9.44999999999999928946']

Điều này giải thích sự làm tròn dường như không nhất quán.

8 hữu ích 0 bình luận chia sẻ
0

như NPE đã nói rằng biểu diễn nhị phân của một số thập phân không chính xác, vì vậy bạn có thể nhận được hành vi kỳ lạ khi làm tròn, một mô-đun giải quyết vấn đề này là số thập phân, Đây là tài liệu chính thức

0 hữu ích 0 bình luận chia sẻ
loading
Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ python python-3.x rounding , hoặc hỏi câu hỏi của bạn.

Có thể bạn quan tâm

loading