如何将25%加到任何以十进制格式的值或变量

时间:2018-11-19 11:55:57

标签: c# percentage

我的代码在这里

    if (dUIAnswer == "yes" || dUIAnswer == "ya")
    {
        quote += (25 / 100) * quote;            
    }

    if (coverageType == "full coverage")
        quote += (50 / 100) * quote; ;


   return quote;

如果用户具有DUI,我基本上试图将“ quote”值本身提高25%。请给我一个简单的代码解决方案。

3 个答案:

答案 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 / 10050 / 100的结果是0

为什么?

在C#中,当将整数(intlong等)除以整数时,小数部分将被截断-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(对于doubleF附加到其中之一,将其转换为float.0double),或在末尾添加一个(<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}}作为后缀)。