嗨,大家好,我是Stroustrup的“使用C ++进行编程,原理和实践”的编程和新手,我在第3章的最后完全停顿了,并进行了练习,要求您编写一段代码进行涉及2个数字的许多计算,其中包括查找数字的比率。不幸的是,本书根本没有涉及到这一点,我想自己弄清楚我的头发,只能为我的小脑子找到高级的代码示例。
我目前的代码是:
double ratio;
if (val2 > val1)
ratio = (val2 / val1);
if (val2 < val1)
ratio = (val1 / val2);
cout << "The ratio of " << val1 << " and " << val2 << " is 1:" << ratio << '\n';
对于等于整数比率(例如100和25)的数字,它工作得很好,但是尽管我将变量“ ratio”设置为两倍,但在非整数比率的情况下,它会从答案中删除所有小数。谁能告诉我我要去哪里错了?
当将整数相除时,结果是整数(使用整数算术):
11 / 2 == 5
11 % 2 == 1 /* remainder */
当除以浮点数时,结果也是浮点数:
11.0 / 2 == 5.5
11 / 2.0 == 5.5
((double) 11) / 2 == 5.5
在你的情况下
double ratio = (val2 / val1);
您有一个整数除法,并且只有在disvison执行后,它的结果才会被强制转换为double
。您可以声明val2
和val1
为double
:
double val1;
double val2;
或将比率的至少一个参数强制转换为double
:
double ratio = ((double)val2) / val1;
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句