Tôi biết, câu hỏi dường như là lạ. Lập trình viên đôi khi nghĩ quá nhiều. Vui lòng đọc tiếp ...
Trong CI sử dụng signed
và unsigned
số nguyên rất nhiều. Tôi thích thực tế là trình biên dịch cảnh báo tôi nếu tôi làm những việc như gán một số nguyên đã ký cho một biến không dấu. Tôi nhận được cảnh báo nếu tôi so sánh đã ký với số nguyên không dấu và nhiều hơn nữa.
Tôi thích những cảnh báo này. Họ giúp tôi giữ mã chính xác.
Tại sao chúng ta không có sự sang trọng giống nhau cho phao? Một căn bậc hai chắc chắn sẽ không bao giờ trả về một số âm. Cũng có những nơi khác mà giá trị float âm không có ý nghĩa. Ứng cử viên hoàn hảo cho một float không dấu.
Btw - Tôi không thực sự quan tâm đến một chút chính xác mà tôi có thể nhận được bằng cách loại bỏ bit dấu hiệu khỏi phao. Tôi siêu hạnh phúc với float
s như họ bây giờ. Đôi khi tôi chỉ muốn đánh dấu một dấu phẩy là không dấu và nhận được cùng một loại cảnh báo mà tôi nhận được với các số nguyên.
Tôi không biết về bất kỳ ngôn ngữ lập trình nào hỗ trợ các số dấu phẩy động không dấu.
Bất cứ ý tưởng tại sao họ không tồn tại?
BIÊN TẬP:
Tôi biết rằng x87 FPU không có hướng dẫn để xử lý các số float không dấu. Cho phép chỉ sử dụng các hướng dẫn nổi đã ký. Việc sử dụng sai (ví dụ: xuống dưới 0) có thể được coi là hành vi không xác định theo cách tương tự như tràn các số nguyên đã ký không được xác định.