C++ 计算两个数之比

0 c++

大家好,我对编程还很陌生,正在学习 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';
Run Code Online (Sandbox Code Playgroud)

这对于等于整数比率(例如 100 和 25)的数字效果很好,但是尽管我将变量“比率”设置为双精度,但在非整数比率的情况下,它会从答案中删除任何小数。谁能告诉我哪里错了?

Dmi*_*nko 5

整数相除的结果是整数(使用整数算术):

11 / 2 == 5
11 % 2 == 1 /* remainder */
Run Code Online (Sandbox Code Playgroud)

当除以浮点值时,结果也是浮点:

11.0 / 2 == 5.5
11 / 2.0 == 5.5
((double) 11) / 2 == 5.5
Run Code Online (Sandbox Code Playgroud)

在你的情况下

 double ratio = (val2 / val1);
Run Code Online (Sandbox Code Playgroud)

您有一个整数除法,并且只有在执行除法之后,它的结果才会被转换为double. 您可以将val2和声明val1double

double val1; 
double val2;
Run Code Online (Sandbox Code Playgroud)

将该比率的至少一个参数转换为double

double ratio = ((double)val2) / val1; 
Run Code Online (Sandbox Code Playgroud)