我正在尝试根据用户输入的金额制作一个确定佣金的功能。它需要用户输入double并使用它来确定它所使用的方程式。但是我写的代码总是转到else语句,我不确定我的条件有什么问题。
double calculate(double s)
{
double c;
if (s > 300,000)
{
c = 25,000 + (0.15 * (s-300,000));
cout << "went to if" << endl;
return c;
}
else if (300,000 > s && s > 100,000)
{
c = 5,000 + (0.10 * (s-100,000));
cout << "went to else if" << endl;
return c;
}
else
{
c = 0.05 * s;
cout << "went to else" << endl;
return c;
}
}
答案 0 :(得分:25)
s > 300,000
是逗号表达式,相当于(s > 300),000
。逗号表达式的值是列表中最后一个的值,此处为000
。转换为false
后评估为bool
。
您可以将其写为
if( s > 300'000 )
或者,如果编译器不支持新奇的表示法,只需
if( s > 300000 )
或者你可以定义
double const k = 1000;
并写
if( s > 300*k )
同样适用于25 000,10万和5000文字。
答案 1 :(得分:18)
中的数字
300,000
是什么意思
if (s > 300,000)
事实上,是对,
-operator的一种奇怪使用,它被解析为
if ((s > 300),(000))
并始终以false
结果。相反,尝试
if (s > 300000)
(同上else if (300,000 > s && s > 100,000)
和其他几个地方。)
答案 2 :(得分:4)
300,000
不是正确的double
字面值,但应用逗号运算符,最后得到值0
。
使用.
用于双重文字:300.000
或不使用数千名分隔符:300000