Tại sao thực hiện numeric_limits :: min trả lại giá trị âm cho int, nhưng giá trị dương cho ví dụ: nổi và đôi?Tại sao number_limits :: min trả về giá trị âm cho giá trị int nhưng dương cho float/double?
#include<iostream>
#include<limits>
using namespace std;
int main() {
cout << "int: " << numeric_limits<int>::min() << " "
<< "float: " << numeric_limits<float>::min() << " "
<< "double: " << numeric_limits<double>::min() << "\n";
return 0;
}
Output:
int: -2147483648 float: 1.17549e-38 double: 2.22507e-308
Từ cppreference:
Trả về biểu diễn giá trị hữu hạn tối thiểu bởi các loại số T.
Đối với các loại dấu chấm động với denormalization , min trả về tối thiểu tích cực không giá trị rmalized. Lưu ý rằng hành vi này có thể là bất ngờ, đặc biệt là khi so sánh với hành vi của min đối với các loại tích phân. Để tìm giá trị không có giá trị nhỏ hơn, hãy sử dụng
numeric_limits::lowest
.phút chỉ có ý nghĩa đối với các loại bị chặn và cho các loại không dấu không bị chặn, tức là các loại đại diện cho một tập hợp giá trị âm không giới hạn không có nghĩa là tối thiểu.
Đối với các giá trị điểm động, phút được xác định là số * dương * nhỏ nhất được thể hiện chính xác theo loại đó. –