Tại sao bạn cần float / double?


29

Tôi đã xem http://www.joelonsoftware.com/items/2011/06/27.html và cười vào trò đùa của Jon Skeet về 0,3 không phải là 0,3. Cá nhân tôi chưa bao giờ gặp vấn đề với số float / số thập phân / đôi nhưng sau đó tôi nhớ rằng tôi đã học được 6502 từ rất sớm và không bao giờ cần phao trong hầu hết các chương trình của mình. Lần duy nhất tôi sử dụng nó là cho đồ họa và toán học trong đó các số không chính xác đều ổn và đầu ra là cho màn hình và không được lưu trữ (trong db, tệp) hoặc phụ thuộc vào.

Câu hỏi của tôi là, nơi nào bạn thường sử dụng phao / số thập phân / đôi? Vì vậy, tôi biết để coi chừng những vấn đề này. Với tiền, tôi sử dụng thời gian dài và lưu trữ giá trị theo cent, để tăng tốc độ của một đối tượng trong trò chơi, tôi thêm ints và chia (hoặc bithift) giá trị để biết liệu tôi có cần di chuyển pixel hay không. (Tôi đã làm cho đối tượng di chuyển trong 6502 ngày, chúng tôi không có phân chia cũng không nổi nhưng có sự thay đổi).

Vì vậy, tôi chủ yếu là tò mò.


10
bởi vì vấn đề rất quan trọng là tiền lãi tôi phải trả cho khoản thế chấp của tôi vẫn là 12,6 và doest trở thành 13 chỉ vì cos 13 là một con số tròn đẹp như vậy.
Chani

1
"Tôi đã học được 6502 từ rất sớm và không bao giờ cần nổi trong hầu hết các chương trình của mình ... để biết tốc độ của một đối tượng, tôi thêm ints và chia giá trị để biết có nên di chuyển pixel hay không." Đây là những cách rất bất thường để hoàn thành các nhiệm vụ này trong thực tiễn hiện đại, ngoại trừ việc đại diện cho tiền là xu dài.
jprete

Điều tốt máy tính hiểu millicents.
tylermac

1
Hoặc ngoài ra, tại sao sử dụng số thập phân khi chúng ta có thể sử dụng phân số?
tylermac

6
@Scrooge - trớ trêu thay bạn không thể đại diện cho 0,6 trong một lần nổi.
Martin Beckett

Câu trả lời:


28

Bởi vì họ đang có, đối với hầu hết các mục đích, nhiều hơn chính xác hơn số nguyên.

Bây giờ thì thế nào? "cho tốc độ của một vật thể trong trò chơi ..." đây là một ví dụ điển hình cho trường hợp như vậy. Nói rằng bạn cần phải có một số đối tượng rất nhanh, như đạn. Để có thể mô tả chuyển động của chúng bằng các biến tốc độ nguyên, bạn cần đảm bảo tốc độ nằm trong phạm vi của các biến số nguyên, điều đó có nghĩa là bạn không thể có một raster tốt tùy ý.

Nhưng sau đó, bạn cũng có thể muốn mô tả một số vật thể rất chậm, như kim giờ của đồng hồ. Vì đây là khoảng 6 bậc độ lớn chậm hơn so với các đối tượng viên đạn, ld (10⁶) ⁶ 20 bit đầu tiên bằng 0, short intloại trừ các loại từ đầu. Ok, hôm nay chúng tôi có longs ở khắp mọi nơi, điều này khiến chúng tôi có 12 bit vẫn thoải mái. Nhưng ngay cả khi đó, tốc độ đồng hồ sẽ chính xác đến chỉ bốn chữ số thập phân. Đó không phải là một chiếc đồng hồ tốt ... nhưng nó chắc chắn là ổn cho một trò chơi. Chỉ là, bạn sẽ không muốn làm cho raster thô hơn nhiều so với hiện tại.

... Điều này dẫn đến các vấn đề nếu một ngày nào đó bạn muốn giới thiệu một loại đối tượng mới, thậm chí nhanh hơn. Không còn "khoảng trống".

Điều gì xảy ra nếu chúng ta chọn một loại phao? Cùng kích thước 32 bit, nhưng bây giờ bạn có đủ 24 bit chính xác cho tất cả các đối tượng. Điều đó có nghĩa là, đồng hồ có đủ độ chính xác để duy trì đồng bộ lên đến từng giây trong nhiều năm. Các viên đạn không có độ chính xác cao hơn, nhưng dù sao chúng cũng chỉ "sống" trong các phân số của một giây, do đó, nó sẽ hoàn toàn vô dụng nếu chúng có. bạn không gặp rắc rối nào nếu bạn muốn mô tả các vật thể thậm chí nhanh hơn nhiều (tại sao không phải là tốc độ ánh sáng? Không vấn đề gì) hoặc các vật thể chậm hơn nhiều. Bạn chắc chắn sẽ không cần những thứ như vậy trong một trò chơi, nhưng đôi khi bạn làm trong các mô phỏng vật lý.

Và với các số có dấu phẩy động, bạn luôn có được độ chính xác tương tự và không cần phải khéo léo chọn một số raster không rõ ràng. Đó có lẽ là điểm quan trọng nhất, vì sự cần thiết lựa chọn như vậy rất dễ bị lỗi.


Số nguyên là hoàn toàn chính xác. Sự không chính xác là phụ thuộc từ tính toán không chính xác.
fjdumont

15
Số nguyên chỉ hoàn toàn chính xác khi bạn sử dụng chúng để thực sự đại diện cho số nguyên (ℤ). Đại diện cho bất cứ điều gì khác có nghĩa là, thực sự, tính toán không chính xác. Trong trường hợp như vậy, bạn có hai khả năng: hoặc xác định một số loại hoàn toàn phù hợp với các số bạn thực sự muốn đại diện. điều này là có thể, ví dụ Mathicala có thể làm điều đó. Nhưng nó rất phức tạp và tốn thời gian, và thường không đáng để bỏ công sức vì bạn thực sự không cần độ chính xác hoàn hảo. Nhưng bạn cần độ chính xác tốt , và đó là nơi mà phao thường làm việc tốt hơn số nguyên.
leftaroundabout

53

Bạn sử dụng chúng khi bạn mô tả một giá trị liên tục thay vì một giá trị rời rạc . Nó không phức tạp hơn để mô tả hơn thế. Đừng phạm sai lầm khi giả sử bất kỳ giá trị nào có dấu thập phân là liên tục. Nếu nó thay đổi tất cả cùng một lúc, như thêm một xu, thì nó rời rạc.


28

Bạn thực sự có hai câu hỏi ở đây.

Tại sao mọi người cần toán học dấu phẩy động, dù sao?

Như Karl Bielefeldt chỉ ra, số dấu phẩy động cho phép bạn mô hình số lượng liên tục - và bạn tìm thấy chúng ở khắp mọi nơi - không chỉ trong thế giới thực, mà ngay cả những nơi như kinh doanh và tài chính.

Tôi đã sử dụng toán học dấu phẩy động trong nhiều lĩnh vực trong sự nghiệp lập trình của mình: hóa học, làm việc trên AutoCAD và thậm chí viết một trình giả lập Monte Carlo để dự đoán tài chính. Trên thực tế, có một anh chàng tên David E. Shaw đã sử dụng các kỹ thuật mô hình khoa học dựa trên dấu phẩy động được áp dụng cho Phố Wall để kiếm tiền tỷ.

Và, tất nhiên, có đồ họa máy tính. Tôi tham khảo về việc phát triển kẹo mắt cho giao diện người dùng và cố gắng làm điều đó ngày nay mà không có sự hiểu biết vững chắc về dấu phẩy động, lượng giác, tính toán và đại số tuyến tính, sẽ giống như thể hiện một cuộc đấu súng với máy bỏ túi.

Tại sao bất cứ ai cũng cần một cái phao so với một đôi ?

Với các biểu diễn tiêu chuẩn của IEEE 754, float 32 bit cung cấp cho bạn khoảng 7 chữ số thập phân có độ chính xác và số mũ trong phạm vi 10 -38 đến 10 38 . Nhân đôi 64 bit cung cấp cho bạn khoảng 15 chữ số thập phân có độ chính xác và số mũ trong phạm vi 10 -307 đến 10 307 .

Có vẻ như một chiếc phao sẽ đủ cho những gì mà bất kỳ ai cũng cần, nhưng thực tế không phải vậy. Chẳng hạn, nhiều đại lượng trong thế giới thực được đo bằng hơn 7 chữ số thập phân.

Nhưng tinh tế hơn, có một vấn đề thông thường được gọi là "lỗi vòng". Biểu diễn dấu phẩy động nhị phân chỉ có giá trị đối với các giá trị có phần phân số có mẫu số là lũy thừa 2, như 1/2, 1/4, 3/4, v.v. Để biểu thị các phân số khác, như 1/10, bạn "làm tròn" giá trị cho phân số nhị phân gần nhất, nhưng nó hơi sai - đó là "lỗi vòng". Sau đó, khi bạn làm toán trên những con số không chính xác đó, sự không chính xác trong kết quả có thể tồi tệ hơn nhiều so với những gì bạn bắt đầu - đôi khi tỷ lệ lỗi nhân lên, hoặc thậm chí chồng chất theo cấp số nhân.

Dù sao, bạn càng phải làm việc với các chữ số nhị phân càng nhiều, thì biểu diễn nhị phân làm tròn của bạn sẽ càng gần với số bạn đang cố gắng biểu thị, do đó, lỗi vòng của nó sẽ nhỏ hơn. Sau đó, khi bạn làm toán trên nó, nếu bạn có nhiều chữ số để làm việc, bạn có thể thực hiện nhiều thao tác hơn trước khi lỗi vòng tích lũy chồng chất lên đến đâu là một vấn đề.

Trên thực tế, nhân đôi 64 bit với 15 chữ số thập phân của họ không đủ tốt cho nhiều ứng dụng. Tôi đã sử dụng các số dấu phẩy động 80 bit vào năm 1985 và bây giờ, IEEE xác định loại dấu phẩy động 128 bit (16 byte) mà tôi có thể tưởng tượng sử dụng.


2
+1 Hãy trải nghiệm của tôi với các hệ thống điều khiển có độ phân giải cao như kính thiên văn cho thiên văn học là việc nhân đôi 64 bit không đủ tốt trừ khi bạn sắp xếp các thuật ngữ của mình. Ditto để kiểm soát hỏa lực và điều hướng tầm xa
Tim Williscroft

20

Đó là một quan niệm sai lầm phổ biến, rằng ở mọi nơi bạn đang giao dịch với tiền, bạn nên lưu trữ giá trị của nó dưới dạng số nguyên (xu). Mặc dù trong một số trường hợp đơn giản như cửa hàng trực tuyến, điều đó đúng, nếu bạn có thứ gì đó cao cấp hơn thì không giúp được gì nhiều.

Hãy lấy ví dụ: một nhà phát triển kiếm được 100.000 đô la một năm. Tháng lương chính xác của anh ấy là bao nhiêu? Sử dụng số nguyên bạn nhận được kết quả $ 8333,33 (¢ 833333), nhân với 12 là $ 99.999,96. Đã giữ nó như là số nguyên giúp đỡ? Không, nó đã không.

Các ngân hàng luôn sử dụng giá trị thập phân / số nguyên? Vâng, họ làm cho một phần giao dịch. Nhưng ví dụ ngay khi bạn bắt đầu nói chuyện về ngân hàng đầu tư, ngoại trừ việc theo dõi các giao dịch thực tế, mọi thứ khác đều trôi nổi. Vì đó là tất cả mã nội bộ, bạn sẽ không nhìn thấy mã này, nhưng bạn có thể đạt đỉnh tại QuantLib , về cơ bản là giống nhau (ngoại trừ sạch hơn nhiều ;-).

Tại sao nên dùng phao? Bởi vì sử dụng số thập phân hoàn toàn không giúp ích gì khi bạn đang sử dụng các hàm như căn bậc hai, logarit, quyền hạn với số mũ không nguyên, v.v. Và tất nhiên, số float nổi nhanh hơn các kiểu thập phân.


1
@Job - số thập phân và số float rất khác nhau. Bạn có thể lưu trữ 0,1 chính xác trong một loại thập phân, nhưng không phải trong một số float hoặc double.
Scott Whitlock

3
Tôi đã có một câu hỏi khác. Nếu bạn trả tiền $100,000/12và sử dụng phao. Tại sao kết quả sẽ chính xác $ 100.000? Tại sao số float (hoặc số thập phân) sẽ làm tròn lên hoặc xuống mỗi khi ai đó được trả tiền? Tôi đang nói về việc viết séc (bạn không thể thực hiện 1/2 hoặc 1/3 xu) hoặc gửi tiền trực tiếp (tôi cho rằng nó có cùng giới hạn)

@acid: >>> x = 100000 / 12.0 >>> x * 12 100000.0
vartec

đọc lại nhận xét của tôi? Câu hỏi của tôi là khi tôi sử dụng phần mềm để tạo séc mỗi tháng. Vì người ta không thể trả 1/2 xu làm thế nào để người đó nhận được toàn bộ số tiền sau một năm?

2
@acid: bạn không thể sử dụng phép chia thẳng, bất kể bạn sử dụng số nguyên, số thập phân hay phép chia thành số float sau đó làm tròn. Đó là toàn bộ vấn đề, sử dụng số thập phân không giúp ích gì cho trường hợp đó.
vartec

4

Những gì bạn đã mô tả là công việc hoàn toàn tốt xung quanh cho các tình huống mà bạn kiểm soát tất cả các đầu vào và đầu ra .

Trong thực tế, nó không phải là trường hợp. Bạn sẽ cần có khả năng đối phó với các hệ thống cung cấp cho bạn dữ liệu của họ dưới dạng giá trị thực ở một mức độ chính xác nào đó và sẽ mong bạn trả lại dữ liệu theo cùng định dạng. Trong những trường hợp như vậy bạn sẽ gặp phải những vấn đề này.

Trong thực tế, bạn sẽ gặp phải những vấn đề này ngay cả khi bạn sử dụng các thủ thuật bạn liệt kê. Khi tính thuế 17,5% cho một mức giá, bạn sẽ nhận được một phần xu cho dù bạn lưu trữ giá trị dưới dạng đô la hay xu. Bạn phải làm tròn số chính xác vì nhân viên thuế rất khó chịu nếu bạn không trả đủ tiền cho anh ta. Sử dụng các moneyloại chính xác (bất kể chúng là ngôn ngữ bạn đang sử dụng) sẽ cứu bạn khỏi một thế giới đau khổ.


Loại tiền là gì? (ngôn ngữ hoặc liên kết tham chiếu) và tại sao đó là loại 'chính xác'? Có phải vì ... 128 bit hay nhiều thứ gì đó không? Khác của tôi tại sao sử dụng 'thủ thuật' của tôi là không chính xác? Bạn có một số nguyên theo xu. Nếu bạn nhân nó với 0,175, bạn sẽ có được một số nguyên và sử dụng nó cho bất cứ điều gì bạn muốn. Nghĩ về ví dụ của bạn tôi nghĩ float sẽ có thể giữ giá trị của tôi với độ chính xác đủ nhưng tôi sẽ không phải lo lắng về 0,3f == 0,3d là sai. -edit- và +1

1
@ acidzombie24 - Tôi không có nghĩa là một loại cụ thể, nhưng loại ngôn ngữ của bạn sử dụng để thể hiện giá trị tiền. Ngoài ra nếu bạn có 10 xu và nhân với 0,175 thì bạn có 1,75 xu - làm thế nào để bạn đối phó với điều đó với số học số nguyên? Là 1 xu hay 2 xu? Hãy hiểu sai và khách hàng của bạn cuối cùng có thể sở hữu cho người đóng thuế rất nhiều tiền.
ChrisF

Bạn không bao giờ nên nhân 10 (một số nguyên) với 0,175 (một số thực / số trôi nổi) vì bạn không nên trộn các số chính xác với các số không chính xác; kết quả sẽ không chính xác. Nói cách khác, trong một hệ thống các số chính xác, một giá trị như .175 sẽ không bao giờ tồn tại và do đó đây là một phép tính không nhạy cảm. Một giải pháp tốt hơn là nhân 10000 với 175 và tự chèn một dấu thập phân khi thích hợp.
Barry Brown

8
@ Khai thác - Tôi biết. Tôi đã cố gắng minh họa loại vấn đề bạn nhận được. Ngoài ra, giá trị như 0.175 tồn tại nếu thuế suất là 17,5% và bạn cần tính thuế cho một mặt hàng có giá 10 xu.
ChrisF

1
@acidzombie: Loại chính xác để sử dụng cho tiền là số thập phân có điểm cố định với độ chính xác cao (ít nhất 4 điểm thập phân). Không IFS, ands, hoặc buts. Lưu trữ giá trị tiền như xu là không đủ, bởi vì trong thực tế, nó chỉ cung cấp cho bạn hai điểm chính xác.
Aaronaught

3

"Chúa tạo ra toàn bộ con số, mọi thứ khác là công việc của con người." - Kronecker Leopold (1886).

Theo định nghĩa, bạn không cần bất kỳ loại số nào khác. Turing hoàn thiện cho một ngôn ngữ lập trình dựa trên các mối quan hệ đơn giản giữa các loại số khác nhau. Nếu bạn có thể làm việc với các số nguyên (a / k / a số tự nhiên), bạn có thể làm bất cứ điều gì.

Câu hỏi là loại đặc biệt bởi vì bạn không cần chúng. Có lẽ bạn muốn những nơi thuận tiện hoặc tối ưu hoặc rẻ hơn hoặc một cái gì đó?


7
Chúng ta cũng có thể phân phối với toàn bộ số, vì người ta cũng có thể xây dựng chúng bằng cách chỉ sử dụng các hoạt động lý thuyết và tập hợp trống. Nhưng cả điều đó và lập luận từ sự hoàn chỉnh của Turing đều là chủ nghĩa giảm thiểu học thuật được đưa đến mức cực đoan.
Bob Murphy

4
Ngoài ra, tính đầy đủ của Turing chỉ áp dụng cho máy tính. Cả số nguyên và thậm chí cả số hữu tỷ đều không hoàn chỉnh về mặt toán học, vì cả hai đều không được đóng để hội tụ các chuỗi Cauchy. Vì vậy, Kronecker tràn ngập không khí nóng: nếu bạn muốn có một không gian số liệu hoàn chỉnh bao gồm toàn bộ các số, bạn phải nhận được thực: xkcd.com/849
Bob Murphy

1
@Bob Murphy: "chủ nghĩa giảm thiểu học thuật mang đến cực đoan". Đúng. Câu hỏi là kém và dẫn đến câu trả lời này là có thể.
S.Lott

2

Trong một câu, các kiểu thập phân dấu phẩy động đóng gói chuyển đổi sang và từ các giá trị số nguyên (đó là tất cả các máy tính biết cách xử lý ở cấp nhị phân; không có dấu thập phân trong nhị phân) cung cấp logic, thường dễ- hiểu giao diện để tính toán các số thập phân.

Thành thật mà nói, bạn không cần phao vì bạn biết cách làm toán thập phân bằng số nguyên cũng giống như nói bạn biết cách làm số học bằng tay, vậy tại sao phải sử dụng máy tính? Vì vậy, bạn biết khái niệm; bravo. Không có nghĩa là bạn phải thực hiện kiến ​​thức đó mọi lúc. Nó thường nhanh hơn, rẻ hơn và dễ hiểu hơn đối với một người không nhị phân khi nói đơn giản là 3.5 + 4.6 = 8.1 thay vì chuyển đổi các hình ghép sig thành một số lượng nguyên.


1

Ưu điểm chính của các loại dấu phẩy động là từ góc độ thời gian chạy, hai hoặc ba định dạng (tôi muốn nhiều ngôn ngữ được hỗ trợ định dạng 80 bit) sẽ đủ cho phần lớn các mục đích tính toán. Nếu các ngôn ngữ lập trình có thể dễ dàng hỗ trợ một nhóm các loại điểm cố định, thì độ phức tạp phần cứng cần thiết cho một mức hiệu suất nhất định thường sẽ thấp hơn với các loại điểm cố định so với điểm nổi. Thật không may, cung cấp hỗ trợ như vậy là xa "dễ dàng".

Để một ngôn ngữ lập trình đáp ứng 98% nhu cầu số của ứng dụng một cách hiệu quả, nó sẽ phải bao gồm hàng tá loại và cung cấp các hoạt động xác định cho hàng trăm kết hợp; hơn nữa, ngay cả khi một ngôn ngữ lập trình có hỗ trợ điểm cố định tuyệt vời, một số ứng dụng vẫn cần duy trì độ chính xác tương đối gần như không đổi trong phạm vi đủ lớn để yêu cầu dấu phẩy động. Cho rằng toán học dấu phẩy động sẽ cần thiết trong một số trường hợp trong mọi trường hợp, việc các nhà cung cấp phần cứng tập trung vào hiệu suất toán học với hai hoặc ba định dạng dấu phẩy động và có mã sử dụng các định dạng đó bất cứ khi nào chúng hoạt động tốt, nhìn chung sẽ đạt được kết quả tốt hơn "Bang for the buck" hơn là cố gắng tối ưu hóa hành vi của toán học điểm cố định.

Ngẫu nhiên, toán học điểm cố định có lợi thế hơn với bộ xử lý 8 bit và 16 bit so với toán học 32 bit. Trên bộ xử lý 8 bit, trong trường hợp 32 bit sẽ không đủ, loại 40 bit sẽ chỉ tốn 25% dung lượng và thời gian nhiều hơn 25-50% so với loại 32 bit và yêu cầu 37,5% ít không gian hơn và thời gian ít hơn 37,5-60% so với loại 64 bit. Trên nền tảng 32 bit, nếu loại 32 bit không đủ cho một thứ gì đó, thường có rất ít lý do để sử dụng bất cứ thứ gì dưới 64 bit. Nếu loại điểm cố định 48 bit là đủ, loại "nhân đôi" 64 bit sẽ hoạt động tốt như loại điểm cố định.


0

Nói chung, bạn nên rất cẩn thận khi sử dụng chúng. Hiểu được sự mất độ chính xác có thể phát sinh từ những phép tính đơn giản thậm chí là một thách thức. Ví dụ: tính trung bình một danh sách các số như thế này là một ý tưởng rất tồi:

double average(List<Double> data) {
  double ans = 0;
  for(Double d : data) {
    ans += d;
  }
  return ans / data.size();
}

Lý do là, đối với các danh sách đủ lớn, về cơ bản, bạn sẽ mất tất cả các điểm dữ liệu khi ansđủ lớn (xem ví dụ này ). Vấn đề với mã này là đối với các danh sách nhỏ, nó có thể sẽ chỉ hoạt động --- nó chỉ ở quy mô mà nó bị phá vỡ.

Cá nhân, tôi nghĩ bạn chỉ nên sử dụng chúng khi: a) phép tính thực sự phải nhanh; b) bạn không quan tâm rằng kết quả có khả năng bị tắt (trừ khi bạn thực sự biết những gì bạn đang làm).


-1

Một suy nghĩ là bạn sẽ sử dụng các biểu diễn float hoặc double khi bạn cần xử lý các giá trị ngoài phạm vi số nguyên.

Các kiến ​​trúc ngày nay (đại khái) có phạm vi số nguyên đã ký là +/- 2.147.483.647 (32 bit) hoặc +/- 9.223.372.036.854.775.880 (64 bit). Unsign mở rộng điều đó bởi hệ số 2.

Các phao nổi của IEEE 754 (đại khái) đi từ +/- 1,4 × 10 ^ 45 đến 3,4 × 10 ^ 38. Double mở rộng phạm vi đó lên +/- 5 × 10−324 ± 2.225 × 10 ^ 308 với rất nhiều điều kiện và chi tiết cụ thể được bỏ qua ở đây.

Tất nhiên, lý do rõ ràng nhất là bạn có thể cần phải đại diện -0 ;-)


Các số chủ yếu từ các bài viết trên wikipedia và có ý nghĩa minh họa. Ngoại trừ -0, đó chỉ là cho vui.
Stephen

Vấn đề là có RẤT NHIỀU số nguyên trong phạm vi khổng lồ đó hoàn toàn không được đại diện.
Barry Brown

@BarryBrown Hoàn toàn đúng. "Rất nhiều điều kiện và chi tiết cụ thể bỏ qua" mặc dù.
Stephen

-1

Lý do thông thường là vì chúng nhanh vì JVM thường sử dụng hỗ trợ phần cứng cơ bản (trừ khi bạn sử dụngrictfp).

Xem https://stackoverflow.com/questions/517915/when-to-use-strictfp-keyword-in-java để biết những gì nghiêm ngặt ngụ ý.


Toán học dấu phẩy động nhanh hơn toán học số nguyên? Trên bộ xử lý nào để tính toán dấu phẩy động mất ít chu kỳ hơn tính toán số nguyên?
this.josh

1
@ this.josh, hoàn toàn phụ thuộc vào số chữ số bạn có trong các số của mình. Ngoài ra số nguyên không thể phân chia chính xác mà có thể hoặc không quan trọng.

-2

Đó là lý do tại sao chúng ta cần hệ điều hành 256 bit.

Độ dài Plank (khoảng cách nhỏ nhất bạn có thể đo) = 10 ^ -35m
Vũ trụ quan sát được là 14Bn Parsecs = 10 ^ 25m
Vì vậy, bạn có thể đo bất cứ thứ gì theo đơn vị độ dài Plank dưới dạng số nguyên nếu bạn chỉ có 200 bit chính xác.


2
-1: nếu bạn mô phỏng mọi thứ ở quy mô lớn hơn vũ trụ quan sát được thì sao?
amara

2
@sparkleshy, đó là những gì con trỏ FAR dành cho!
Martin Beckett
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.