分部没有输出正确的答案c ++

时间:2015-02-07 07:19:42

标签: c++

我是c +的新手,我正在尝试制作一个基本的数学程序,以便热身语言。当我尝试做问题9/2或任何带小数的答案时,答案似乎是错误的。我想输出“4.50”,但我继续得到“4.00”。是什么导致这种情况以及如何防止它。感谢

double INN = 0.0;   
INN = 9 / 2;
std::cout.precision (3);
std::cout << std::showpoint << INN << endl;

2 个答案:

答案 0 :(得分:2)

INN = 9 / 2;会将4.0分配给INN

将其替换为INN = 9.0 / 2.0;以分配4.5


说明:

因为92都是整数,9 / 2总是会产生整数除法,结果也是整数。因此,结果必须舍入,并向下舍入到最接近的整数。

9.02.0是双倍的,因此9.0 / 2.0将导致浮点除法,从而产生双倍值。

答案 1 :(得分:1)

在语句中,INN=9/2; 9和2都是整数,因此调用带有两个整数的/运算符的重载,结果为整数。

从标准,

  

当整数被分割时,/运算符的结果是   任何小数部分丢弃的代数商.88)如果   商a / b是可表示的,表达式(a / b)* b + a%b应为   等于a。

这通常被称为截断为零。

要实际调用/运算符的浮点版本,必须将至少一个操作数强制转换为doublefloat

INN=(double)9/2;

这将为您提供4.5