我的代码在这里
if (dUIAnswer == "yes" || dUIAnswer == "ya")
{
quote += (25 / 100) * quote;
}
if (coverageType == "full coverage")
quote += (50 / 100) * quote; ;
return quote;
如果用户具有DUI,我基本上试图将“ quote”值本身提高25%。请给我一个简单的代码解决方案。
答案 0 :(得分:3)
25 / 100
进行整数除法,因此结果为0
(类型为int
)。将它们设置为十进制,即25.0M / 100.0M
或更高:
quote *= 1.25M;
答案 1 :(得分:0)
要将cyrrent值加上25%,以便它将变为当前值的125%,因此将其乘以1.25(125%):
if (dUIAnswer == "yes" || dUIAnswer == "ya")
quote *= 1.25M;
if (coverageType == "full coverage")
quote *= 1.5M;
答案 2 :(得分:0)
问题是:在C#和类似语言(C,C ++,...)中,25 / 100
或50 / 100
的结果是0
。
为什么?
在C#中,当将整数(int
,long
等)除以整数时,小数部分将被截断-0.25
变成0
。 / p>
因此,有一些解决方案:
1)只需在您的代码中编写0.25
(或0.5
):
if (dUIAnswer == "yes" || dUIAnswer == "ya")
{
quote += 0.25 * quote;
}
if (coverageType == "full coverage")
quote += 0.5 * quote; ;
return quote;
2)通过将后缀double
(对于float
)或D
(对于double
或F
附加到其中之一,将其转换为float
或.0
。 double
),或在末尾添加一个(<type>)
(将其添加为if (dUIAnswer == "yes" || dUIAnswer == "ya")
{
quote += (25.0 / 100D) * quote;
}
if (coverageType == "full coverage")
quote += ((float)50 / 100) * quote; ;
return quote;
),或使用decimal
进行强制转换:
M
(您也可以将其显式转换为{{1}}或通过附加{{1}}作为后缀)。