Tôi đang xem các tham chiếu xung đột trong Oracles documentation. Có sự khác biệt nào giữa số thập phân được lưu trữ trong FLOAT và NUMBER loại trong cơ sở dữ liệu không?Số nổi Oracle vs Số
Khi tôi nhớ lại từ C, et al, phao có các giới hạn chính xác mà một int không có. Ví dụ: Đối với 'phao', 0,1 (Cơ sở 10) xấp xỉ là 0,110011001100110011001101 (Cơ sở 2) tương đương với một cái gì đó giống như 0,100000001490116119384765625 (Cơ sở 10). Tuy nhiên, đối với 'int's, 5 (Base 10) là chính xác 101 (Base 2).
Đó là lý do sau đây sẽ không chấm dứt như mong đợi trong C:
float i;
i = 0;
for (i=0; i != 10;)
{
i += 0.1
}
Tuy nhiên tôi thấy elsewhere in Oracle's documentation mà phao đã được định nghĩa là một số. Và như tôi đã hiểu, việc triển khai thực hiện kiểu số NUMBER của Oracle không chạy cùng một vấn đề với float của C.
Vậy, câu chuyện có thật ở đây là gì? Có Oracle lệch khỏi định mức của những gì tôi mong đợi xảy ra với phao nổi/FLOAT?
(Tôi chắc chắn đó là một con ong-fart-in-a-hurricane của sự khác biệt cho những gì tôi sẽ sử dụng chúng cho, nhưng tôi biết tôi sẽ có câu hỏi nếu 0.1 * 10 đi ra đến 1.00000000000000001)