小甲鱼的铁粉 发表于 2020-7-7 17:53:10

c++的这个输出该怎么理解呢

#include<iostream>
#include<stdlib.h>
using namespace std;
int main()
{
    cout.setf(ios_base::fixed,ios_base::floatfield);
    float tub = 10.0 / 3.0;
    double mint = 10.0 / 3.0;
    const float million = 1.0e6;
    cout << "tub = " << tub << endl;
    cout << "amillion tubs = " << million*tub << endl;
    cout << "and then million tubs =";
    cout << 10 * million * tub << endl;
    cout <<"mint = " << mint <<" and a million mints = ";
    cout << million * mint << endl;
    system("pause");
    return 0;
}
输出为
tub = 3.333333
amillion tubs = 3333333.250000
and then million tubs =33333332.000000
mint = 3.333333 and a million mints = 3333333.333333
请按任意键继续. . .
1.这个tub开始是3.333333,amillion tubs是tubs乘10的6次方的结果,为什么乘10的6次方后小数点后还有个25,这个25哪里来的?
2.amillion tubs再乘10不是应该为33333332.500000吗?问什么变为33333332.000000了,那个5怎么消失了?
问题比较多,麻烦鱼油们看一下吧,感谢大家!!!!!!!

Hello. 发表于 2020-7-7 18:41:16

这个应该是精确度的问题吧

小甲鱼的铁粉 发表于 2020-7-7 18:48:18

Hello. 发表于 2020-7-7 18:41
这个应该是精确度的问题吧

我也知道是精度问题{:10_257:}

巴巴鲁 发表于 2020-7-7 18:49:11

这个是编译器的问题吧,你把tub保留8位小数,得出的结果是3.33333325,保留9位是3.333333254
保留小数越多,结果越不准
第二问就不知道了

Hello. 发表于 2020-7-7 18:51:01

小甲鱼的铁粉 发表于 2020-7-7 18:48
我也知道是精度问题

知道了还问啥{:10_257:}

小甲鱼的铁粉 发表于 2020-7-7 18:53:04

Hello. 发表于 2020-7-7 18:51
知道了还问啥

{:10_250:}这个好像是概念问题,确实是不用问{:10_297:}

Hello. 发表于 2020-7-7 18:54:07

小甲鱼的铁粉 发表于 2020-7-7 18:53
这个好像是概念问题,确实是不用问

{:10_256:}等学到后面会懂哒

小甲鱼的铁粉 发表于 2020-7-7 18:54:34

Hello. 发表于 2020-7-7 18:54
等学到后面会懂哒

嗯{:10_275:}

Hello. 发表于 2020-7-7 18:58:31

哈~可否最佳{:10_297:}
页: [1]
查看完整版本: c++的这个输出该怎么理解呢