关于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?
书上的题,不太明白,高手指教。
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。
所以你的结果就不足为奇了。