0

このコードを書きました if(tot=100) でエラーが発生します double 型のリテラルは暗黙的に 10 進数に変換できません

    //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.";
        }
4

5 に答える 5

5

小数点を含むリテラルを指定するdecimalには、小数点指定子を使用する必要がありますM

if(tot == 100.00M)

それ以外の場合、コンパイラは a が必要であると想定しますdouble(これは、例外メッセージが参照しているものです - double は、明示的なキャストなしでは 10 進数に変換できません)。

ただし、この例で.00は冗長であるため、次を使用できます。

if(tot == 100M)

==他の回答で述べたように、if ステートメントで値を比較するときに必ず使用する必要があります。これを行っていれば、わずかに異なる例外を受け取っていたはず"Operator '==' cannot be applied to operands of type 'decimal' and 'double'"です。

于 2013-03-29T05:21:34.470 に答える
1

試す

if (tot == 100.00)
{
    //etc
}
于 2013-03-29T05:20:26.637 に答える
1

リテラルの型はリテラル自体から明確にする必要があり、割り当て先の変数の型はそのリテラルの型から割り当て可能にする必要があります。double から decimal への暗黙的な変換はありません (情報が失われる可能性があるため)。

100.00M のようなこのタイプのリテラルを作成するには、'M' サフィックスを使用します。

于 2013-03-29T05:32:03.293 に答える
1

エラーがあります:

if(tot=100.00)

それらを比較するのではなく、tot に 100.00 を割り当てます。でも書くなら

if(tot == 100.00M)

すべてが機能します

于 2013-03-29T05:22:51.867 に答える
0

使用する

if (tot = 100M)

タイプなので動作しtotますdecimal

于 2013-03-29T05:41:43.383 に答える