3

私は「Head First C#」の本を読んでいて、その章の 1 つでプログラムを作成し、int と decimal として宣言された変数を使用しています。Visual Studio は、この 2 つの組み合わせについて、何度か不機嫌になりました。例えば:

dinnerParty.NumberOfPeople = (int) numericUpDown1.Value;

NumberOfPeople は int として宣言されており、明らかに数値のアップダウンは小数です。

また、この本では、いくつかの数字を足し合わせると、後に M を付けています。例えば:

public void SetHealthyOption(bool healthy)
{
    if (healthy)
    {
        CostOfBeveragesPerPerson = 5.00M;
    }
    else
    {
        CostOfBeveragesPerPerson = 20.00M;
    }
}

CostOfBeveragesPerPerson は 10 進数として宣言されます。

だから私は2つの具体的な質問があります:

1) 何かをキャストする必要があるとき、どうすればわかりますか? キャスティングにはかなりのことがあると思います...キャスティングについて学ぶための良いリンクを誰かが提供できますか?

2) 数字の後の M は何をしますか?

編集

したがって、M は数値が 10 進数であり、2 倍ではないことを示します。(10 進数) 50.00 のように数値を 10 進数としてキャストしないのはなぜですか? そして、その「機能」は何と呼ばれますか?どの「文字」が利用可能かを確認したい場合、何をググればよいでしょうか?

4

3 に答える 3

6
  1. 通常、明示的なキャストは、2 つの型の間で精度が失われる場合に必要になります。たとえば、int があり、それを long に割り当てた場合、int が保持できるすべての値を long が保持できるため、キャストは必要ありません。ただし、int に long を代入する場合、int は long よりも保持できる値が少なく、データが失われる可能性があるため、キャストが必要になります。
  2. M は数値を Decimal 型として定義します。これを省略すると、数値は double として解釈されます。
于 2009-04-11T03:32:51.640 に答える
4
Type    Suffix          Example
uint    U or u          100U
long    L or l          100L
ulong   UL or ul        100UL
float   F or f          123.45F
decimal M or m          123.45M

C# の数値リテラルについて説明しているページはたくさんあります。最後の文字は、キャストや関数ではありません。あなたが書いているものが特定の型の値を表していることを示す構文です。したがって、(10 進数) 5.0 の書き込みはキャストを使用しますが、5.0m の書き込みはキャストを使用しません。

于 2009-04-11T03:59:35.600 に答える
2
  1. これは、MSDN から直接キャストするための適切なリンクです。
  2. M は、数値が adecimalであることをコンパイラに伝えます。double
于 2009-04-11T03:40:29.563 に答える