Tôi vừa nhận thấy rằng std::nextafter(0, 1)
trên hệ thống của tôi dường như tạo ra một giá trị lớn hơn 0 và thấp hơn std::numeric_limits::min()
.Làm thế nào có thể std :: nextafter() trong C++ 11 tạo ra các giá trị nhỏ hơn std :: number_limits :: min?
Làm cách nào có thể? Tôi nghĩ min()
trả về số nhỏ nhất có thể lớn hơn 0.
#include <iostream>
int main(int argc, char *argv[])
{
double next = std::nextafter(0.0, 1.0);
double min = std::numeric_limits<double>::min();
std::cout << "next: " << next << "\nmin: " << min << "\nnext<min: " << (next < min) << "\nnext>0: " << (next > 0.0) << std::endl;
}
Output:
next: 4.94066e-324
min: 2.22507e-308
next<min: 1
next>0: 1
trình biên dịch của tôi là MinGW 5.3.0 32bit.
Câu hỏi hay và yêu thích tên của bạn! – Bathsheba