在C ++中,为什么通过两种不同的机制(内联和通过函数调用)将2个浮点数相除,结果如下所示?
经过以下将5分为4的计算后,f1 = 0和f2 = 0.8。
#include <iostream>
using namespace std;
int main() {
float f1 = 4 / 5;
float f2 = FloatDivision(4, 5);
cout << "f1 equals " << f1 << endl;
cout << "f2 equals " << f2 << endl;
cin.ignore();
}
float FloatDivision(float f1, float f2) {
if (f2 != 0) {
return f1 / f2;
} else {
cout << "Error: The denominator cannot be zero" << endl;
return 0;
}
}
答案 0 :(得分:3)
4/5是整数除法。您已将它们定义为此类。而在除法函数中,您将它们定义为浮点数。
对于f1,请尝试
float f1 = 4.0 / 5.0;
答案 1 :(得分:2)
如果
settingsHtml = `
<div class="btn-group chargeability">
<button type="button" class="btn bg-indigo waves-effect current-schedule-chargeable" data-id="`+d[0][i].id+`" style="width:115px" title="Schedule Chargeable Setting">`+ chargeable +`</button>
<button type="button" class="btn bg-indigo dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">
<span class="caret"></span>
<span class="sr-only">Toggle Dropdown</span>
</button>
<ul class="dropdown-menu" style="position: relative;z-index: 99999;">
<li style="background:#f9f5e9;border-bottom:1px solid #ccc"><a href="javascript:void(0);" data-value="1" data-lead="`+d[0][i].lead_id+`" data-id="`+d[0][i].id+`" class="schedule-chargeable waves-effect waves-block">Yes</a></li>
<li style="background:#f9f5e9"><a href="javascript:void(0);" data-value="0" data-lead="`+d[0][i].lead_id+`" data-id="`+d[0][i].id+`" class="schedule-chargeable waves-effect waves-block">No</a></li>
</ul>
</div>`;
这是整数除法,结果为0,然后将其转换为float,并保持为0。
在函数调用DivFloat的情况下,它需要float参数,因此4和5首先转换为float,然后进行除法。因此结果为0.8。