C
printf、sprintf,数值转字符串
%.5f ,单精度小数点后5位
%.15f ,双精度小数点后15位
sscanf,字符串转数值
%f,单精度
%lf,双精度
详细的精度说明见std::printf, std::fprintf, std::sprintf, std::snprintf
C++
只要是继承自istreamostream的都遵循一样的规则,需要通过std::setprecision修改精度,默认按照有效数字6位
double pi = 3.14159265358979323846; std::cout << pi; //3.14159 std::cout << std::setprecision(16) << pi; //3.141592653589793
同理,std::fstream也是一样。
而std::to_string(double)是输出6位有效数字的,要非常小心。参照std::to_string其本质是sprintf(buf, "%Lf", value),而sprintf对于%lf没有指定精度时是按照默认6位有效数字



