0

これはどのように可能ですか?

decimal d = ePhrase.MaxPrice; //ePhrase.MaxPrice==3 - Entity (edmx) object from sql 2012 express data field is decimal (18,2)
string t = d.ToString(); //Why does t=="3,00"?
d = (decimal)3.00;
t = d.ToString(); //t=="3"

問題は、ある場合はt == "3,00"であり、他の場合はt =="3"であるということです。これら2つのケースの違いは何ですか?

ありがとうございます:

decimal d = ePhrase.MaxPrice;
  string t = d.ToString();//t=="3.00"
  d  = 4.0000m;
  t = d.ToString();//t=="4.0000"

問題は「d=(decimal)3.00」です-どうやらこれはREALdecimalではありません

4

1 に答える 1

6

数値の実数リテラルをとして扱いたい場合はdecimal、接尾辞mまたはM

d = 3.00m;
t = d.ToString(); //t=="3"

ここ:

d = (decimal)3.00;

として扱われませんdecimalが、として扱われますdouble

注: "m"コンパイラにを3.00小数として扱うように指示し、変換の一部としてoriginalValueに暗黙のキャストが発生します。

詳細については、これを参照してください:C#の10進数

于 2012-12-21T05:29:07.120 に答える