numeric_limits::digits10的确切含义是什么?
stackoverflow中的其他一些相关问题使我认为这是double的最大精度,但是
这是原型(prototype):
#include <float.h>
#include <limits>
#include <math.h>
#include <iostream>
#include <iomanip>
#include <sstream>
#include <string>
int main(int argc, const char* argv[]) {
std::ostringstream os;
//int digit10=std::numeric_limits<double>::digits10; // ==15
//int digit=std::numeric_limits<double>::digits; // ==53
os << std::setprecision(17);
os << DBL_MAX;
std::cout << os.str();
std::stringbuf sb(os.str());
std::istream is(&sb);
double readDouble=0.0;
is >> readDouble;
bool success = fabs(DBL_MAX-readDouble)<0.1;
}
最佳答案
numeric_limits::digits10
是可以保留而不会丢失的小数位数。
例如numeric_limits<unsigned char>::digits10
为2。这意味着未签名的char可以保存0..99而不会丢失。 如果为3,则可以容纳0..999,但是众所周知,它只能容纳0..255。
This manual page有一个浮点数示例,(缩短时)显示
cout << numeric_limits<float>::digits10 <<endl;
float f = (float)99999999; // 8 digits
cout.precision ( 10 );
cout << "The float is; " << f << endl;
版画
6
The float is; 100000000
关于c++ - numeric_limits <double>::digits10的含义是什么,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/747470/