Excel không tính tổng chính xác.

CHÀO

Tôi đang gặp vấn đề sau và hy vọng có thể nhận được sự giúp đỡ ở đây.

Tôi nhập thủ công các số có 2 chữ số thập phân vào một bảng tính Excel mới và tính tổng số tiền.

Sau khi nhập 92 số, kết quả sẽ trông như thế này (và đây là kết quả chính xác).

492.639,41000000000000000

sau đó thêm một số khác như 820.01 và nó sẽ trông như sau

493.459,42000000 1 00000000

Chữ số thập phân thứ 9 xuất hiện từ đâu và làm thế nào để loại bỏ nó?

Xin chân thành cảm ơn mọi phản hồi/giúp đỡ trước.

Karl




Trả lời:

CHÀO,

Những gì bạn đang thấy đã được ghi nhận rõ ràng và là do lỗi làm tròn khi thực hiện phép toán số thực trong Excel. Excel hoạt động trên hệ nhị phân và thường không có giá trị nhị phân chính xác tương đương với số thực. Điều này không chỉ xảy ra riêng với Excel mà còn do Excel hoạt động theo tiêu chuẩn IEEE 754, mô tả cách máy tính nhị phân xử lý số thực, xem liên kết bên dưới.

Trong trường hợp của bạn, bạn nên cộng các số đã được làm tròn như thế này.

=ROUND(82.21,2)

https://support.microsoft.com/en-gb/help/214118/how-to-correct-rounding-errors-in-floating-point-arithmetic



Trả lời:

Chào Mike

Cảm ơn bạn đã trả lời nhanh chóng.

Tôi đã làm theo lời khuyên của bạn và cả hướng dẫn từ liên kết web (Đặt độ chính xác như hiển thị) trong Office 2010, tuy nhiên số có chữ số thập phân thứ 9 vẫn hiển thị là 1.

Có cách nào để hiển thị số chính xác mà không có số 1 xuất hiện ở đâu đó trong phần thập phân không?

Cảm ơn một lần nữa

Karl



Trả lời:

MikeH viết:

Trong trường hợp của bạn, bạn nên cộng các số đã được làm tròn như thế này.

=ROUND(82.21,2)

Việc làm tròn hằng số không bao giờ cần thiết, và nó cũng không giải quyết được vấn đề gì. Rõ ràng, một hằng số được nhập với 2 chữ số thập phân đã được làm tròn đúng cách đến 2 chữ số thập phân rồi.

Karl đã viết:

Tôi đã làm theo lời khuyên của bạn và cả hướng dẫn từ liên kết web (Đặt độ chính xác như hiển thị) trong Office 2010, tuy nhiên số vẫn hiển thị là 1 ở chữ số thập phân thứ 9. Có cách nào để hiển thị số chính xác mà không có chữ số 1 xuất hiện ở đâu đó trong phần thập phân không?

Đầu tiên, việc thiết lập "Độ chính xác như hiển thị" là không nên. Và trước khi bạn làm điều đó trong một tệp Excel đã có sẵn, bạn nên (đáng lẽ ra đã phải) sao lưu tệp đó. PAD có thể gây ra những hậu quả không mong muốn và đôi khi không thể khắc phục được.

Thứ hai, PAD chỉ thực sự hiệu quả nếu bạn cũng định dạng ô với định dạng chỉ định số lượng chữ số thập phân. Nó kém hiệu quả hơn đối với các ô được định dạng là Chung.

Tuy nhiên, PAD chỉ áp dụng cho giá trị cuối cùng của ô. Nó không áp dụng cho các biểu thức bên trong công thức. Vì vậy, nếu bạn có một ô với công thức =SUM(A1:A1000) được định dạng là Số với 2 chữ số thập phân, PAD sẽ khắc phục được sự cố. Tuy nhiên, PAD sẽ không giúp ích gì nếu bạn có công thức dạng IF(SUM(A1:A1000) > 1000,...).

Lời khuyên cần tuân theo là làm tròn tổng các số một cách rõ ràng, chứ không phải làm tròn từng số riêng lẻ. Nếu công thức ban đầu của bạn là =SUM(A1:A1000), hãy thay đổi công thức thành = ROUND( SUM(A1:A1000) ,2) .

Nói chung, nếu bạn mong muốn kết quả tính toán chính xác đến n chữ số thập phân, hãy làm tròn kết quả tính toán một cách rõ ràng đến số chữ số thập phân đó.



Trả lời:

Chào Mike

Cảm ơn phản hồi và lời khuyên của bạn.

Tôi đã thử công thức =Round của bạn nhưng công thức đó chưa hoàn chỉnh.

Dù sao thì tôi cũng đã hoàn thành công thức và giờ nó hoạt động rồi.

Tôi vẫn khá tò mò vì bảng tính Excel của tôi có 12 cột chứa số (tất cả đều cùng định dạng) và chỉ có một cột có một ô mà khi tôi nhập số như 12.43 thì nó lại hiển thị là 12.43000000001000000 với số một.

Bạn có ý kiến ​​gì về điều đó không?

Cảm ơn sự giúp đỡ và phản hồi của bạn.

Rất cảm kích

Tốt nhất

Karl



Trả lời:

Karl đã viết:

Tôi vẫn khá tò mò vì bảng tính Excel của tôi có 12 cột chứa số (cùng định dạng) và chỉ có một cột có một ô mà khi tôi nhập số như 12.43 thì nó lại hiển thị là 12.43000000001000000 với số 1 ở cuối. Có ai có ý kiến ​​gì về điều này không?

Tôi không phải là Mike. Nhưng vì bạn đã trả lời bài đăng của tôi, nên tôi cho rằng bạn đang hỏi tôi.

Vấn đề là: Excel sử dụng số thực dấu phẩy động nhị phân 64 bit để biểu diễn các giá trị số bên trong. 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. Và giá trị xấp xỉ của cùng một phân số thập phân có thể khác nhau tùy thuộc vào độ lớn của phần nguyên.

Đó là lý do tại sao, ví dụ, IF(10.01 - 10 = 0.01, TRUE) trả về FALSE(!).

Thật khó, nếu không muốn nói là không thể, dự đoán khi nào kết quả của phép toán nhị phân sẽ khác biệt một cách vô cùng nhỏ so với kết quả mà chúng ta mong đợi dựa trên phép toán thập phân. Đôi khi, ngay cả thứ tự của phép toán nhị phân cũng tạo ra sự khác biệt.

Trong ví dụ sau, cùng một số được cộng lại theo thứ tự khác nhau sẽ cho kết quả khác nhau rõ rệt ở ô A1 và B1.

Đôi khi chúng ta không nhận ra sự khác biệt vô cùng nhỏ giữa kết quả phép toán nhị phân và thập phân vì Excel chỉ định dạng 15 chữ số có nghĩa đầu tiên.

Trong ví dụ sau, công thức MATCH trong ô C1 cho thấy rằng cùng một số được cộng theo thứ tự khác nhau sẽ cho kết quả khác nhau trong ô A1 và B1, mặc dù A1 và B1 trông giống nhau khi được định dạng để hiển thị ít nhất 15 chữ số có nghĩa.

Comments

Popular posts from this blog

Điều tôi muốn làm trong Excel 2010 là tạo một nút tùy chỉnh và gắn nó vào thanh công cụ Truy nhập nhanh và chạy một macro cụ thể.

Mở tài liệu Excel và Word từ Outlook Lỗi - Không đủ bộ nhớ

Excel: Tìm và trả về "số cuối cùng" trong một cột, trong đó cột chứa: cả ô trống và số dương tùy ý (lớn hơn 0).