Trong Excel, khi tôi nhập 22222,09482 thì tôi thấy số 22222.0948199999 trong thanh công thức


28

Bạn có thể vui lòng giúp đỡ không - vì tôi có một tình huống kỳ lạ là khi tôi nhập một số 22222,09482 trong ô thì tôi thấy một số khác 22222.0948199999 trong thanh công thức. Dưới đây là ảnh chụp của vấn đề.

Lỗi mẫu

Tôi thấy hành vi tương tự khi tôi nhập các số sau:

22222.09482
33333.09482
44444.09482
55555.09482

nhưng khi tôi nhập 11111,09482 và 66666,09482, 77777,09482 .. cho đến 99999,09482 thì chúng hiển thị chính xác. Tôi không chắc chắn điều này có liên quan đến làm tròn? Tôi đã không thiết lập bất kỳ hồ sơ làm tròn. Bạn có thể vui lòng giúp tôi giải quyết vấn đề.


1
Tìm kiếm gọn gàng, đối với tôi - bạn có thể sử dụng ROUND()không? =ROUND(A1,5), sau đó sao chép / dán dữ liệu dưới dạng Giá trị và xóa số gốc?
BruceWayne

1
@BruceWayne, thú vị là ROUND()hiển thị các chữ số chính xác nhưng sao chép / dán dưới dạng giá trị sẽ đưa nó trở lại vấn đề ban đầu!
Rey Juna

1
@ReyJuna - Sau đó, chỉ cần làm ROUND(A1,5)lại trên các giá trị được dán. Sau đó sao chép / dán chúng dưới dạng giá trị và Round()một lần nữa, sau đó sao chép / dán. ...: P ... thật thú vị, và có vẻ như @EugenRieck có lý do. Câu hỏi hay!
BruceWayne

1
Bạn có thực sự quan tâm đến sự khác biệt giữa 22222,09482 và 22222.0948199999 không? Đó là sự khác biệt của 5 phần trong 100 nghìn tỷ.
Russell Borogove

4
Là toán nổi điểm bị hỏng? . Tuy nhiên, đó có thể là một lỗi, vì doublecó đủ độ chính xác mà khi được làm tròn sẽ hiển thị các giá trị chính xác như hầu hết mọi người mong đợi
phuclv

Câu trả lời:


31

Đây là một lỗi.

Theo các câu trả lời khác, Excel sử dụng biểu diễn chính xác kép của IEEE. Độ chính xác của nó là 53 chữ số nhị phân có ý nghĩa, tương ứng với khoảng 16 chữ số thập phân.

Luôn luôn "an toàn" để hiển thị 15 chữ số thập phân quan trọng đầu tiên . Theo nghĩa là bất kỳ số "được trình bày" nào được đưa ra với 15 chữ số có thể được phân biệt một cách an toàn với các số có được bằng cách thay đổi số thập phân thứ 15 bằng một. Ví dụ: các số gồm 15 chữ số:

22222.09481 99999
22222.09482 00000
22222.09482 00001

lập bản đồ ba biệt số kép chính xác. Không ai trong số ba người này sẽ là "hàng xóm" trong đại diện chính xác kép, trong trường hợp cụ thể này.

Vì vậy, nhầm lẫn hai cái đầu tiên trong màn hình người dùng, là một lỗi của Excel.

Trên thực tế, trong miền này (giữa 16384 và 32768), độ chính xác tuyệt đối là 2 -38 và các số sau đây có thể biểu thị được:

...
22222.09481 99998 96571 9714760780334472656250000
22222.09481 99999 00209 9502831697463989257812500 <-- the one closest to what Excel showed to the user
22222.09481 99999 03847 9290902614593505859375000
22222.09481 99999 07485 9078973531723022460937500
22222.09481 99999 11123 8867044448852539062500000
22222.09481 99999 14761 8655115365982055664062500
22222.09481 99999 18399 8443186283111572265625000
22222.09481 99999 22037 8231257200241088867187500
22222.09481 99999 25675 8019328117370605468750000
22222.09481 99999 29313 7807399034500122070312500
22222.09481 99999 32951 7595469951629638671875000
22222.09481 99999 36589 7383540868759155273437500
22222.09481 99999 40227 7171611785888671875000000
22222.09481 99999 43865 6959682703018188476562500
22222.09481 99999 47503 6747753620147705078125000
22222.09481 99999 51141 6535824537277221679687500
22222.09481 99999 54779 6323895454406738281250000
22222.09481 99999 58417 6111966371536254882812500
22222.09481 99999 62055 5900037288665771484375000
22222.09481 99999 65693 5688108205795288085937500
22222.09481 99999 69331 5476179122924804687500000
22222.09481 99999 72969 5264250040054321289062500
22222.09481 99999 76607 5052320957183837890625000
22222.09481 99999 80245 4840391874313354492187500
22222.09481 99999 83883 4628462791442871093750000
22222.09481 99999 87521 4416533708572387695312500
22222.09481 99999 91159 4204604625701904296875000
22222.09481 99999 94797 3992675542831420898437500
22222.09481 99999 98435 3780746459960937500000000 <-- the one closest to what the user types
22222.09482 00000 02073 3568817377090454101562500
22222.09482 00000 05711 3356888294219970703125000
22222.09482 00000 09349 3144959211349487304687500
22222.09482 00000 12987 2933030128479003906250000
22222.09482 00000 16625 2721101045608520507812500
22222.09482 00000 20263 2509171962738037109375000
22222.09482 00000 23901 2297242879867553710937500
22222.09482 00000 27539 2085313796997070312500000
22222.09482 00000 31177 1873384714126586914062500
22222.09482 00000 34815 1661455631256103515625000
22222.09482 00000 38453 1449526548385620117187500
22222.09482 00000 42091 1237597465515136718750000
22222.09482 00000 45729 1025668382644653320312500
22222.09482 00000 49367 0813739299774169921875000
22222.09482 00000 53005 0601810216903686523437500
22222.09482 00000 56643 0389881134033203125000000
22222.09482 00000 60281 0177952051162719726562500
22222.09482 00000 63918 9966022968292236328125000
22222.09482 00000 67556 9754093885421752929687500
22222.09482 00000 71194 9542164802551269531250000
22222.09482 00000 74832 9330235719680786132812500
22222.09482 00000 78470 9118306636810302734375000
22222.09482 00000 82108 8906377553939819335937500
22222.09482 00000 85746 8694448471069335937500000
22222.09482 00000 89384 8482519388198852539062500
22222.09482 00000 93022 8270590305328369140625000
22222.09482 00000 96660 8058661222457885742187500
22222.09482 00001 00298 7846732139587402343750000
...

Để giải thích thêm, hãy thử gõ 22222.09482vào một ô và gõ 22222.0948199999(năm dấu đuôi) trong một ô khác. Excel nên chọn hai đại diện của IEEE được chỉ định bởi mũi tên ở trên. Và tôi nghĩ là có, bởi vì bạn có thể tính được sự khác biệt của hai ô này để có được 9.82254E-11. Nhưng cả hai đều được thể hiện theo cùng một cách.

Nếu Excel đã hiển thị 17 chữ sốđầu tiên, điều đó sẽ hữu ích để chọn chính xác số IEEE là "bên dưới" số thập phân. Trong trường hợp đó:

22222.0948199999 --> 22222.09481 99999 00
22222.09482      --> 22222.09481 99999 98

Nhưng hiển thị 15 chữ số được làm tròn một cách không chính xác, là sai lệch và không có ích.


Trước khi bất cứ ai tuyên bố đó là cố ý, thì tại sao không 8.7thể hiện hành vi tương tự? Số chính xác kép gần nhất 8.7là:

8.69999999999999 93

vì vậy nó sẽ hiển thị như 8.69999999999999thể đây là cố ý. Nhưng nó không.


9
Bạn nói đúng, đó là một lỗi. Các thuật toán để chuyển đổi một số dấu phẩy động nhị phân hiển thị số chữ số có nghĩa ít nhất là khó, nhưng được biết đến. Có vẻ như ai đó đã bỏ lỡ một số chi tiết quan trọng.
Đánh dấu tiền chuộc

2
@Ruslan Tôi đã thấy rất nhiều chủ đề về số học dấu phẩy động, trên Stack Overflow và các trang SE khác, và mọi người thường đưa ra câu trả lời với tất cả các loại sự thật và khái niệm về điểm nổi (nhị phân), mà không liên quan đến các số thực tế và xác minh nếu hành vi tuân thủ theo chuẩn IEEE. Tôi nghĩ rằng tôi có thể đăng câu hỏi "Tại sao 2.1 + 2.2trở lại 4.80000001?" và nhận được nhiều câu trả lời rằng đó là những gì tôi phải mong đợi khi tôi sử dụng dấu phẩy động.
Jeppe Stig Nielsen

1
@benshepherd: ảnh chụp màn hình LibreScript không hiển thị những gì ảnh chụp màn hình Excel hiển thị
Thomas Weller

1
@JeppeStigNielsen: 2.1 + 2.2 = 4.8? Đó chỉ là 0,5. Nó bình thường.
Thomas Weller

@MarkRansom: vậy, Excel có thực sự thực hiện chính nó không? Excel không được triển khai trong C ++ hay cái gì đó tính toán dấu phẩy động cho nó? Có phải đó là những gì bạn đang nói? Hoặc là lỗi trong C ++, vì vậy nó ảnh hưởng đến hàng triệu ứng dụng?
Thomas Weller

23

Excel lưu trữ các số ở định dạng dấu phẩy động 64 bit nhị phân IEEE 754 . Chìa khóa là "cửa hàng" - sự thay đổi từ thập phân sang nhị phân diễn ra bất cứ khi nào một số được lưu trữ, không chỉ khi nó được sử dụng trong một phép tính thực tế.

Một bài viết hay về vấn đề này là tại Tìm hiểu chính xác về dấu phẩy động, hay còn gọi là Tại sao Excel lại cho tôi câu trả lời có vẻ sai?

Có thể tạo một chương trình bảng tính có thể xử lý các số thực sự lớn với rất nhiều chữ số có nghĩa. Nhưng nó không thực tế lắm. Excel có thể đã được thiết kế để sử dụng định dạng thập phân IEEE 754 , cho phép 34 chữ số thập phân - quá đủ để lưu trữ 22222,09482. Nhưng thay vào đó, nó sử dụng định dạng Double64 nhị phân phổ biến hơn rất nhiều , có độ chính xác 53 bit, chỉ dưới 16 chữ số. Mặc dù bạn có thể nghĩ rằng nó là đủ cho một số chỉ có 10 chữ số trong đó, nhưng việc chuyển đổi từ số thập phân sang nhị phân làm phức tạp mọi thứ một chút - tức là, 2222209482 có thể được lưu trữ chính xác 100% dưới dạng số nhị phân64, nhưng không thể 2222,0948482.

Hãy nhớ rằng các bảng tính thông thường được sử dụng cho dữ liệu tài chính, thường không yêu cầu quá nhiều chữ số chính xác hoặc cho mô hình "nếu như" trong nhiều tình huống khác nhau, trong đó không cần độ chính xác siêu cao. Chắc chắn có các công cụ khác (và có thể là các chương trình bảng tính khác, nhưng tôi đã không tìm kiếm gần đây) rằng theo mặc định hoặc theo cài đặt cấu hình đặc biệt có thể sử dụng định dạng số lớn hơn, nhưng Excel không phải là một trong số chúng.

Đối với những người chỉ ra rằng LibreOffice xử lý việc này tốt hơn, ngoại hình có thể bị đánh lừa. Xem bài đăng này để biết thêm chi tiết. Có vẻ như LibreOffice xử lý số lượng lớn hơi khác nhau nhưng có cùng biểu diễn dấu phẩy động 64 bit cơ bản với các vấn đề tương tự.


3
Câu trả lời này sẽ tốt hơn nếu nó cũng giải thích việc quan sát thấy rằng một số số có số thập phân được hiển thị chính xác như đã nhập - chẳng hạn như 11111,09482 trong ví dụ của OP.
andrew

11
Chỉ để cho vui: 22222.09482được lưu giữ như 1.0101101100111000011000010001100001111110011111000000₂ * 2₁₀^(10000001101₂ - 1023₁₀)trong IEEE 754, hay nói cách khác là chính xác 1.35632902954101553 * 2^14, đó là 22222.0948199999984353787904.
YoYoYonnY

1
Binary64 (còn gọi là độ chính xác kép) quá đủ cho một số có mười chữ số thập phân. Tất nhiên nó không thể được biểu diễn chính xác, nhưng hầu hết các số, bao gồm 0.20.1không thể được biểu diễn chính xác (phần 1/5 (một phần năm) có phần mở rộng nhị phân định kỳ vô hạn). Tuy nhiên, Excel cho thấy mọi thứ một cách khó hiểu.
Jeppe Stig Nielsen

2
"Hãy nhớ rằng các bảng tính thường được sử dụng cho dữ liệu tài chính, thường không yêu cầu quá nhiều chữ số chính xác" - điều này thường rất sai - dữ liệu tài chính yêu cầu hành vi chính xác theo nghĩa "những gì bạn nhập là những gì bạn mong đợi sẽ vẫn ở đó ", Bạn đúng với chuyển đổi thập phân / nhị phân, v.v., nhưng đối số cụ thể này không hợp lệ! Đối với dữ liệu tài chính, chúng tôi thường sử dụng một số loại Moneyhoặc BigIntegerđịnh dạng, thường sử dụng định dạng lưu trữ thập phân .
Honza Zidek

4
Câu trả lời này không đủ để giải thích những gì xảy ra. Chúng tôi đang quan sát một lỗi trong Excel, trong đó số được định dạng sai . 22222,09482 và 22222,0948199999 là các số nhị phân64 riêng biệt.
Ruslan

11

Khi thực hiện tính toán, Excel cần tìm một biểu diễn nhị phân nội bộ tốt cho các số mà nó sử dụng. Trong trường hợp của bạn, nó sử dụng số dấu phẩy động và vì thực tế định dạng dữ liệu này có một xấp xỉ (rất tốt) cho số của bạn, nhưng không khớp chính xác. Vì vậy, nếu bạn không nói rõ cho Excel sử dụng định dạng đầu ra nào, nó sẽ thực hiện một "nỗ lực tốt nhất", dẫn đến một đầu ra gần với giá trị được tính toán bên trong, nhưng không chính xác là văn bản bạn nhập.

Chỉ cần làm rõ điều này: Hiểu rằng văn bản bạn đã nhập đại diện cho một số và chuyển đổi chuỗi chữ số thành một số đã hoàn thành định nghĩa "tính toán" từ phía trên.

BIÊN TẬP

Tôi chưa nói rõ, tôi coi việc lựa chọn sử dụng biểu diễn dấu phẩy động 64 bit thực sự là một điều tốt: Excel không phải là một công cụ cho các nhà khoa học, trong đó một lỗi làm tròn ở chữ số thứ 11 sau dấu thập phân một tác động lớn, nhưng kế toán không muốn tốc độ xử lý của họ giảm đi hàng triệu lần để lấy nguồn tính toán không chính xác có thể biểu hiện bằng số mà họ không bao giờ sử dụng.

Nếu bạn sử dụng chương trình bảng tính cho những gì nó được thiết kế và sử dụng định dạng đầu ra rõ ràng để đảm bảo những hiệu ứng đó không bao giờ biến nó thành cảnh giới hữu hình, bạn sẽ ổn.


1
Bình luận không dành cho thảo luận mở rộng; cuộc trò chuyện này đã được chuyển sang trò chuyện .
DavidPostill

1
Câu trả lời này không đủ để giải thích những gì xảy ra. Chúng tôi đang quan sát một lỗi trong Excel, trong đó số được định dạng sai. 22222,09482 và 22222,0948199999 là các số nhị phân64 riêng biệt.
Ruslan

2

Khi tôi nhập 11111.09482 và 66666.09482, 77777.09482 .. cho đến 99999.09482 thì chúng hiển thị chính xác. Tôi không chắc chắn điều này có liên quan đến làm tròn? Tôi đã không thiết lập bất kỳ hồ sơ làm tròn. Bạn có thể vui lòng giúp tôi giải quyết vấn đề.

Một số số có thể được trình bày chính xác và một số không thể.

Đặt độ chính xác được hiển thị một cách thích hợp cho các tính toán của bạn và sử dụng hàm round () .

  • Giải trình:

  • Giải pháp:

    Bạn có thể thường xuyên ngăn các lỗi làm tròn điểm nổi ảnh hưởng đến công việc của mình bằng cách đặt tùy chọn Chính xác như được hiển thị trước khi bạn áp dụng định dạng số cho dữ liệu của mình. Tùy chọn này buộc giá trị của mỗi số trong bảng tính phải ở độ chính xác được hiển thị trên bảng tính.

    1. Bấm vào Tệp> Tùy chọn.
      Trong Excel 2007: Bấm vào hình ảnh nút Microsoft Office Office, sau đó bấm Tùy chọn Excel.
      Nút hình ảnh

    2. Bấm Nâng cao, rồi bên dưới Khi tính toán sổ làm việc này, chọn hộp kiểm Đặt độ chính xác như được hiển thị, rồi bấm OK.

    3. Nhấn OK.

    4. Trong bảng tính, chọn các ô mà bạn muốn định dạng.

    5. Trên tab Trang chủ, bấm vào hình ảnh Nút Trình khởi động Hộp thoại bên cạnh Số.
      Hình ảnh nút khởi động
      Hình ảnh ruy băng Excel

    6. Trong hộp Danh mục, bấm Số.

    7. Trong hộp Vị trí thập phân, nhập số lượng vị trí thập phân mà bạn muốn hiển thị.

    Mẹo: Để giảm thiểu bất kỳ ảnh hưởng nào của tính không chính xác của lưu trữ số học dấu phẩy động, bạn cũng có thể sử dụng hàm ROUND để làm tròn số đến số vị trí thập phân được tính toán theo yêu cầu của bạn.

  • Tạp chí kế toán - " Lỗi do lỗi tính toán của Excel ":

    Một số số lẻ nhất định tạo ra số thập phân nhị phân lặp lại và khi các chữ số lặp lại đó bị cắt sau 15 vị trí, số nhị phân không chuyển đổi chính xác thành giá trị số dự định. Ví dụ, trong tất cả các phiên bản của Excel, công thức 22,26 - 21,29 sẽ mang lại 0,97, nhưng thay vào đó mang lại 0,970000000000002. Hãy thử nó, và nhớ tăng chiều rộng cột và vị trí thập phân của bạn để bạn có thể thấy vấn đề tính toán.

    Các lỗi như vậy thường được coi là không đáng kể hoặc không quan trọng vì chúng hiếm khi biểu hiện thành các lỗi tính toán có ý nghĩa; Tuy nhiên, đây là hai biện pháp bạn có thể thực hiện để loại bỏ các lỗi dấu thập phân trôi nổi tiềm ẩn:

    1. Hàm ROUND. Sử dụng hàm ROUND của Excel để làm tròn các giá trị được tính toán của bạn đến vị trí thập phân mong muốn, do đó loại bỏ mọi khả năng của dị thường chữ số 15. Ví dụ: công thức = ROUND (-21,29 + 22,26,2) mang lại chính xác 0,97.

    2. Độ chính xác. Bạn có thể bật tùy chọn Chính xác như được hiển thị của Excel để buộc tất cả các công thức cắt bớt và làm tròn các giá trị được tính toán dựa trên các chữ số hiển thị.

    Để bật tùy chọn này trong Excel 2013, 2010 và 2007, hãy chọn Tệp (hoặc Office Office), Tùy chọn (hoặc Tùy chọn Excel), Nâng cao và trong phần Khi tính toán sổ làm việc này, hãy chọn hộp Đặt độ chính xác như được hiển thị và sau đó bấm OK.

    Trong Excel 2003, 2002 và 2000, từ menu Công cụ, chọn Tùy chọn và trên tab Tính toán, bên dưới tùy chọn Sổ làm việc, hãy chọn hộp Chính xác như được hiển thị, rồi bấm OK.


1
Lời giải thích là không liên quan: sự khác biệt giữa các con số dự kiến ​​và thu được là 28 ULP - quá nhiều cho lỗi vòng tự nhiên. "Giải pháp" chỉ che giấu một lỗi thực sự.
Ruslan

Sẽ thật tuyệt nếu bạn có thể đăng nó, cùng với một vài liên kết hỗ trợ câu trả lời của bạn, như câu trả lời của riêng bạn thay vì một bình luận. Bằng cách đó, nó sẽ thu hút sự chú ý của người dùng954171 và mọi người có thể bỏ phiếu cho nó. Bạn có thể cung cấp một liên kết đến Báo cáo lỗi?
Cướp

Đã có một câu trả lời với tất cả các chi tiết toán học có liên quan. Mặc dù có bất kỳ báo cáo lỗi về điều này mặc dù.
Ruslan

0

Như tôi chắc chắn rằng bạn biết, máy tính bên trong chỉ hoạt động bằng cách sử dụng số không và số bit (còn gọi là bit) và có số bit cố định để biểu thị một giá trị (ngày nay thường là 64 bit). Điều đó có nghĩa là số lượng các giá trị khác nhau có thể được biểu diễn là từ 2 đến 64. Đó là một con số khổng lồ, chắc chắn, nhưng số lượng giá trị có thể là hữu hạn, vì vậy không phải tất cả các số đều có thể được biểu diễn. Khi nó gặp một số mà nó không thể biểu thị chính xác, nó sẽ tự động được thay thế bằng số gần nhất mà nó có thể đại diện. Đó là những gì bạn đang thấy.


Bạn nói rằng đó là do chuyển đổi cơ sở số hay vì số lượng bộ nhớ trên mỗi giá trị bị giới hạn? Trong cả hai trường hợp, lý luận của bạn là sai. Về mặt kỹ thuật, hoàn toàn có thể có độ chính xác tùy ý và số độ dài tùy ý - giả sử bộ nhớ vô hạn. Để đưa ra một ví dụ, có GNU bignum. Hơn nữa, không có nhu cầu vốn có để mã hóa các số theo định dạng mất. Vì vậy, khoa học máy tính không có lỗi, cũng không phải là số nhị phân. Chỉ có các nhà phát triển Excel đã chọn mã hóa số bị mất dữ liệu đầu vào của người dùng.
phresnel

-1

Máy tính thực hiện phép toán của chúng ở dạng nhị phân và hầu như luôn sử dụng dấu phẩy động cho các giá trị không nguyên. Các giá trị phân số duy nhất có thể được biểu diễn chính xác bằng dấu phẩy động phải là tổng của một số kết hợp các lũy thừa phân số của 2 (1/2, 1/4, 1/8, 1/16, 1/32, ...) ở giới hạn chính xác được thiết kế (thường là 53 bit). Các giá trị này không phải lúc nào cũng có biểu diễn gọn gàng hoặc chính xác ở dạng thập phân và ngược lại, không phải tất cả các giá trị phân số bạn có thể biểu diễn chính xác bằng số thập phân sẽ có biểu diễn chính xác ở dạng nhị phân. Ví dụ: 0,1. Nó không thể được biểu diễn dưới dạng tổng của các lũy thừa 2 không tồn tại mãi mãi.

Khi bạn nhập một giá trị thập phân vào bảng tính của mình, nó sẽ được chuyển đổi và lưu trữ dưới dạng nhị phân và các trường hợp như bạn mô tả, sẽ trở thành xấp xỉ gần nhất có thể được biểu thị dưới dạng nhị phân. Khi được hiển thị, nó được chuyển đổi trở lại thành số thập phân, một lần nữa yêu cầu xấp xỉ, có thể không chuyển đổi trở lại chính xác cùng một đại diện bạn đã nhập.

Tại sao 53 bit (cho hay nhận)? Bởi vì tiêu chuẩn điển hình để lưu trữ dấu phẩy động "độ chính xác kép" sử dụng 64 bit, trong đó có một lớp phủ (còn gọi là ý nghĩa), một chỉ báo dấu hiệu và số mũ. Số mũ thường được phân bổ 10 bit, dấu hiệu lấy một, để lại 53 cho lớp phủ. Đây là để lưu trữ. Tính toán thường được thực hiện bằng cách sử dụng 80 bit và làm tròn trở lại.

Có những tình huống mà máy tính sẽ hoạt động trong cơ sở 10, đặc biệt là khi làm việc với các giá trị tiền tệ trong đó các tạo tác làm tròn không được chấp nhận.


2
Tôi không đồng ý với một tấm chăn Tất cả các tuyên bố máy tính . Có nhiều máy tính, được thừa nhận hầu hết không còn được sử dụng hoạt động trừ các phần của bảo tàng, đã sử dụng các định dạng số thập phân để lưu trữ và tính toán. Ngoài ra còn có BCD - Binary Coded Decimal - được sử dụng trong một số CPU gần đây, bao gồm cả việc sử dụng hạn chế trong CPU Intel. Không có câu hỏi nào liên quan đến câu hỏi trong tay - phương pháp được Microsoft Excel sử dụng để lưu trữ số, tất cả đều là nhị phân. Nhưng "Tất cả máy tính" không đúng.
manassehkatz

Tôi thấy sự thay đổi từ "Tất cả máy tính" sang "Máy tính" - Tôi sẽ sử dụng "Hầu hết tất cả các máy tính" hoặc "Hầu hết các máy tính hiện đại" hoặc đại loại như thế. Tôi biết - tôi rất kén chọn. Nhưng máy tính cũng vậy :-)
manassehkatz

@manassehkatz Tất cả các máy tính kỹ thuật số là cơ bản nhị phân. BCD chỉ là cấu trúc cơ số 10 trên đỉnh nhị phân để tạo điều kiện cho số học thập phân.
Zenilogix

Mặc dù tất cả các máy tính kỹ thuật số về cơ bản là nhị phân, nhưng thực tế có khá nhiều trong những ngày đầu tiên dựa trên số thập phân. Nhưng tôi đồng ý rằng BCD về cơ bản là cấu trúc cơ sở 10 trên đỉnh nhị phân để tạo điều kiện cho số học thập phân.
manassehkatz

Câu trả lời này nghe như thể đó là lỗi của máy tính. Nhưng nó không phải là. Bạn có thể biểu thị chính xác bất kỳ số nào bạn có thể viết trên giấy (đại diện chính xác 1/3? Dễ dàng khi lưu trữ dưới dạng phân số, ví dụ). Đó thực sự là về những gì đại diện cho các tác giả Excel đã chọn để đại diện cho số.
phresnel

-1

Giống như nhiều người đã nói ở trên, đây là một lỗi đại diện nội bộ. Excel đã đưa ra lựa chọn cho độ chính xác gấp đôi, số dấu phẩy động 64 bit. Điều này cung cấp cho bạn 2 64 giá trị có thể. Miền số thực chứa vô số giá trị, vì vậy khi bạn cố gắng sử dụng một giá trị không thể biểu thị bằng Excel, nó sẽ sử dụng giá trị gần nhất có thể được biểu diễn.

Tôi đã thấy những bình luận nói rằng với bộ nhớ vô hạn, bất kỳ số thực nào cũng có thể được biểu diễn. Đúng, nhưng không có thứ gọi là "bộ nhớ vô hạn" nên đây là điểm moot. Những người khác đã tuyên bố rằng Excel có thể đã sử dụng biểu diễn bên trong lớn hơn, ví dụ 128 bit. Đúng, nhưng, hóa ra máy tính tốt hơn trong việc thực hiện các phép toán trên các số được biểu thị bằng số bit khớp với kích thước bus của bộ xử lý. Vì vậy, một máy tính 32 bit sẽ nhanh nhất trong các hoạt động toán học trên các số 32 bit và một máy tính 64 bit sẽ nhanh nhất trong các hoạt động toán học trên các số 64 bit. Nếu và khi nào sẽ có một máy tính 128 bit, thì chúng ta có thể mong đợi Excel sẽ chuyển sang biểu diễn số 128 bit. Điều đó vẫn sẽ cung cấp một bộ số rất lớn nhưng có giới hạn có thể được biểu diễn.

Nếu mối quan tâm của bạn là về cách các con số trông trong bảng tính, thì việc sử dụng độ chính xác đã đặt (số thập phân) sẽ cho bạn kết quả nhất quán. Nếu bạn lo lắng về sự khác biệt giữa số bạn nhập và số thực được lưu trữ bởi Excel, bạn có quyền được quan tâm. Sự khác biệt là có thật và lỗi sẽ được thực hiện thông qua bất kỳ tính toán nào bạn thực hiện. Tôi sợ rằng bạn đang bị mắc kẹt với lỗi này. Đây là một hạn chế của Excel, không phải là lỗi như một số đã nêu. Nó không có khả năng thay đổi bất cứ lúc nào sớm, vì vậy nếu điều đó không được bạn chấp nhận, tôi khuyên bạn nên tìm một ứng dụng bảng tính khác có thể biểu thị các số có độ chính xác cao hơn. Nhưng hãy nhớ rằng nếu bạn tìm thấy bất kỳ ứng dụng như vậy, hạn chế vẫn còn đó. Đó chỉ là kích thước của lỗi khác nhau.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.