1.float类型只能表示数字里面的前6位或者前7位。也就是说c++只能保证float类型的数字的前6位是正确的。如果要求的精度更高的话,请使用double和long double。
float精度是2^23,能保证6位小数内精确。double精度是2^52,能保证15位小数内精确。
但是,在通常使用中double默认打印位数没有那么多。可以使用强制输出精度的命令语句比较double和float的精度(比较方式:先输入#include <iomanip>,然后在输出语句之前插入cout << setprecision(20);。超过精度范围的小数无效,但是仍然会在屏幕上显示。
float num1 = 77777.789f; float num2 = 77777.788f; cout << num1 - num2 << endl;//-->0
double num3_1 = 10000;
double num3_2 = 3;
double num3 = num3_1 / num3_2;
cout << setprecision(17);
cout << "结果是:" << num3 << endl;//-->结果是:3333.3333333333335
2.