关于C++的简单问题

来源:百度知道 编辑:UC知道 时间:2024/06/25 20:44:40
#include <iostream>
using namespace std
int main()
{double a=3.3,b=1.1
int i=a/b
cout << i << endl
return 0
}

这个结果我觉得似乎是3,但为什么输出的是2?
书上的题,不太明白,高手指教。

因为i=a/b=(3.2999999999999998/1.1000000000000001)=2.99999999999999709090909090936

但由于i为整形,因此自动取整(向下取整舍去小数部分),使数据失真,而输出2.

a/b = 3.00000000

int i = (int)(a/b)

i = 2

因为在计算机中其实double型的3.3为3.2999999999999998,而1.1为1.1000000000000001。
所以你的结果就不足为奇了。