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

C# 如何将25%添加到十进制格式的任何值或变量,c#,percentage,C#,Percentage,我的密码在这里 if (dUIAnswer == "yes" || dUIAnswer == "ya") { quote += (25 / 100) * quote; } if (coverageType == "full coverage") quote += (50 / 100) * quote; ; return quote; 我基本上是试图增加价值“报价”本身的25%,如果用户有酒后驾车

我的密码在这里

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

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


   return quote;

我基本上是试图增加价值“报价”本身的25%,如果用户有酒后驾车。请给我一个简单的解决方案的代码是可能的

25/100
进行整数除法,因此结果为
0
(类型为
int
)。将其设置为十进制,即
25.0M/100.0M
或更好:

quote *= 1.25M;

25/100
进行整数除法,因此结果为
0
(类型为
int
)。将其设置为十进制,即
25.0M/100.0M
或更好:

quote *= 1.25M;

要将当前值的25%添加到当前值的125%,请将其乘以1.25(125%):


要将当前值的25%添加到当前值的125%,请将其乘以1.25(125%):


问题是:<代码> 25/100 <代码>或<代码> 50/100 <代码>是<代码> 0代码>,在C语言和类似语言(C,C++,…)中< < /P> > 为什么?

在C#中,当将整数(
int
long
等)除以整数时,小数部分被截断-
0.25
变为
0

因此,有一些解决方案:

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) 将其中一个NUMEBR转换为
double
float
,方法是将后缀
D
(用于
double
)或
F
(用于
float
),或在末尾添加
.0
(这是
double
),或用
()
强制转换:


(也可以明确地将其转换为<代码>十进制< /代码>,或附加<代码> m < /代码>作为后缀)。<:> /p> < p>问题:<代码> 25/100 < /> >或<代码> 50/100 > /代码>是代码> 0 ,在C语言和类似语言(C,C++,…)中< < /P> 为什么?

在C#中,当将整数(
int
long
等)除以整数时,小数部分被截断-
0.25
变为
0

因此,有一些解决方案:

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) 将其中一个NUMEBR转换为
double
float
,方法是将后缀
D
(用于
double
)或
F
(用于
float
),或在末尾添加
.0
(这是
double
),或用
()
强制转换:


(您也可以显式地或通过附加
M
作为后缀将其转换为
decimal

引用的
类型是什么?这段代码有什么不起作用?十进制类型,它是decimal类型的变量。@JeffreyPadget代码中的问题是您实际上做了整数除法,所以
(25/100)
结果为0,右侧的整个句子结果为0。只要做
quote*=1.25
quote+=(25M/100M)*报价引号的类型是什么?这段代码有什么不起作用?一个十进制类型,它是一个十进制类型的变量。@JeffreyPadget代码中的问题是你实际上做了一个整数除法,所以
(25/100)
结果为0,右边的整个句子结果为0。只要做
quote*=1.25
quote+=(25M/100M)*报价“quote”是一个十进制变量,因此需要乘以1.25M和1.5M,否则会出现编译时错误(CS0019运算符“*=”不能应用于“decimal”和“double”类型的操作数)@pau您是对的,谢谢。“quote”是一个十进制变量,因此需要乘以1.25M和1.5M,否则会出现编译时错误(CS0019运算符'*='不能应用于'decimal'和'double'类型的操作数)@pau您是对的,谢谢。非常感谢您的帮助。这是一个完美的解释。非常感谢。非常感谢您的帮助。这是一个完美的解释。