我写了这段代码我在if(tot = 100)时收到错误 双重类型的文字不能隐式转换为十进制
//value in textboxes
decimal p1 = Convert.ToDecimal(TextBox2.Text);
decimal p2 = Convert.ToDecimal(TextBox3.Text);
decimal p3 = Convert.ToDecimal(TextBox4.Text);
decimal p4 = Convert.ToDecimal(TextBox5.Text);
decimal p5 = Convert.ToDecimal(TextBox6.Text);
decimal p6 = Convert.ToDecimal(TextBox7.Text);
//adding all the p's
decimal tot = p1 + p2 + p3 + p4 + p5 + p6;
if (tot = 100.00)
{
Label2.Text = "Percentage is 100"
}
else
{
Label2.Text = "Total of percentages is not 100.";
}
答案 0 :(得分:5)
要指定带小数点的decimal
字面值,必须使用小数点说明符M
:
if(tot == 100.00M)
否则,编译器假定您需要double
(这是异常消息所指的内容 - 如果没有显式强制转换,则不能将double转换为小数。)
但是,在此示例中,.00
是多余的,因此您可以使用:
if(tot == 100M)
如其他答案中所述,您必须确保在比较if语句中的值时使用==
。如果你这样做了,你会收到一个稍微不同的例外:"Operator '==' cannot be applied to operands of type 'decimal' and 'double'"
,这可能会让事情变得更加清晰。
答案 1 :(得分:1)
尝试
if (tot == 100.00)
{
//etc
}
答案 2 :(得分:1)
您有错误:
if(tot=100.00)
将100.00分配给tot,而不是比较它们。 但是如果你要写
if(tot == 100.00M)
一切都会起作用
答案 3 :(得分:1)
文字的类型应该从文字本身清楚地表明,并且它所分配的变量的类型应该可以从该文字的类型中分配。没有从double到decimal的隐式转换(因为它可能会丢失信息)。
使用'M'后缀创建此类型的文字,如100.00M。
答案 4 :(得分:0)
使用
if (tot = 100M)
它会起作用,因为tot
是decimal
类型