如何在double变量中划分两个整数?

End*_*der 2 c++

我正在为一所学校的实验室工作,该实验室运行10个10000张5手牌.我必须在每只手中找到冲洗和成对.我必须找到每条线索的对和冲洗的百分比.

我的问题是当我试图获得一对一条路径的百分比时

double percent =  total_pairs/10000;
Run Code Online (Sandbox Code Playgroud)

要么

double percent = 5600/10000;
Run Code Online (Sandbox Code Playgroud)

当我想要打印2个小数位时,我的输出变为0我得到以下内容

0.00
Run Code Online (Sandbox Code Playgroud)

使用此代码

cout<<setiosflags(ios::fixed | ios::showpoint);
cout<<setprecision(2)<<percent<<endl;
Run Code Online (Sandbox Code Playgroud)

但我仍然得到零,当我像这样投射时,我得到实际数字

double percent = (double) 5600/10000;
Run Code Online (Sandbox Code Playgroud)

这是正确的,因为我不希望它截断我的输出或我错过了什么

希望你能理解我.

nau*_*cho 8

是的,就是这种情况,下面执行整数除法.然后将结果(0)转换为double.

double percent = 5600/10000
Run Code Online (Sandbox Code Playgroud)

下面的行强制5600是一个双倍,所以现在你实际划分双打

double percent = (double) 5600/10000
Run Code Online (Sandbox Code Playgroud)

如果你的一个数字是常数,你可以确保使用十进制格式来强制浮点除法:

double percent = 5600.0/10000
Run Code Online (Sandbox Code Playgroud)

我有时使用的另一个技巧是乘以1.0,将后面的内容转换为double:

double percent = 1.0 * inta / intb
Run Code Online (Sandbox Code Playgroud)


Jim*_*uck 7

"total_pairs"是否为int?如果是这样,则除以整数除法.您需要将其中一个数字明确地转换为double(另一个将自动提升为double):

double percent = ((double)total_pairs)/10000; // or just simply 10000.0
Run Code Online (Sandbox Code Playgroud)