C++相談室 part9
■ このスレッドは過去ログ倉庫に格納されています
0753731
NGNG結論:標準の 文字列->倍精度浮動小数 の精度には疑問が残った。
#include<stdio.h>
#include<iostream>
#include<sstream>
int main()
{
double dResult;float fResult;char buf[255];
std::cout << "original data:" << "200.123456789012" << std::endl;
sprintf(buf,"%f",(200.123456789012));
sscanf(buf,"%f",&fResult);
sscanf(buf,"%f",&dResult);
std::cout << fResult << std::endl;
std::cout << dResult << std::endl;
printf("%.15g\n",fResult);
printf("%.15g\n",dResult);
sscanf(buf,"%.15g",&fResult);
sscanf(buf,"%.15g",&dResult);
std::cout << fResult << std::endl;
std::cout << dResult << std::endl;
printf("%.15g\n",fResult);
printf("%.15g\n",dResult);
std::cout << "strtod" << std::endl;
char *stopstring;
double dResult2 = strtod(buf,&stopstring);
std::cout << dResult2 << std::endl;
printf("%.15g\n",dResult2);
std::cout << "atof" << std::endl;
double dResult3 = atof(buf);
std::cout << dResult3 << std::endl;
printf("%.15g\n",dResult3);
std::cout << "stringstream" << std::endl;
double dResult4;
std::stringstream stream;
stream << buf;
stream >> dResult4;
printf("%.15g",dResult4);
double Test = 200123456789012;//地道に変換したことを考える。
Test *= 1E-12;
printf("%.15g\n",Test);//これぐらいの精度は欲しい。
}
■ このスレッドは過去ログ倉庫に格納されています