可能和C++类型转换有关的问题

问题遇到的现象和发生背景

偶然在项目中遇到的bug, 查了半天发现是下面这个问题引起的:

问题相关代码,请勿粘贴截图
#include <iostream>

using namespace std;

int main()
{   
    double b = 0.1;

    double a = 3.5;
    int c = a/b;
    cout << "a: " << a << endl;
    cout << "b: " << b << endl;
    cout << "a/b: " << c << endl;

    double f = 0.7/0.2;
    int h = f/b;
    cout << "f: " << f << endl;
    cout << "b: " << b << endl;
    cout << "f/b: " << h << endl; 

    printf("a: %.10f\n", a);
    printf("f: %.10f\n", f);

    if(f == a){
        cout << "f == a" << endl;
    }
    return 0;
}

运行结果及报错内容

运行结果如下:
a: 3.5
b: 0.1
a/b: 35
f: 3.5
b: 0.1
f/b: 34
a: 3.5000000000
f: 3.5000000000

我的解答思路和尝试过的方法

为什么3.5/0.1 有时候是35 有时候是 34 呢?

我想要达到的结果

这个有误差啊
有时候是34.9999998
有时候是35.0000001
int h = f/b;相当于对结果进行强制取整 ,使用的是截尾法 ,34.9999998也会变为34
要想一样,你得用四舍五入
int h = f/b+0.5
这样都是35了

不要用float, float误差非常大

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632