double小数前后加起来的有效数字只有16位,当给定的double有效数在16位以内转换为字符串不会丢失精度
Code:
char precisionStr[100] = {0};
double precisionTest = 11.437565871234012;
sprintf(precisionStr, "%.20f", precisionTest);
cout << "precision----" << precisionStr << endl;
precisionTest = 119.437565871234012;
sprintf(precisionStr, "%.20f", precisionTest);
cout << "precision----" << precisionStr << endl;
Output:
precision----11.43756587123401224915
precision----119.43756587123401402550