10進数型の宣言接尾辞


113

コードで10進リテラルを使用したい場合、mサフィックス(mはお金を表す)が存在することを確認しました。これは小数に適していますか、それともより一般的な割り当てがありますか(dはdoubleを表します。直接変換はサポートされていますが、これは確かに適切ではありません)。

object decimalValue=2m;

注意してください、私はオブジェクト割り当てを例として取り上げました、なぜなら...

decimal decimalValue=2;

...コンパイラーを通じて2が10進数として解釈される必要があることは暗黙のうちに明らかです。

mは問題ないようですが、msdnはこれを10進数型の例として使用しています。

回答:


234

で文書化C#言語仕様、章2.4.4:

float f = 1.2f;
double d = 1.2d;
uint u = 2u;
long l = 2L;
ulong ul = 2UL;
decimal m = 2m;

int、byte、sbyte、short、ushortには何もありません。


サフィックスではありませんが、char c = 'a'アポストロフィを使用して文字を宣言することもできます。
Kevin Hogg、2015

:あなたはまた、より多くのユーザーフレンドリーれているこのドキュメントを参照することができますdocs.microsoft.com/en-us/dotnet/csharp/language-reference/...
ダグラスガスケル

22

接尾辞がない場合、数値の実数リテラルはDoubleになります。サフィックスmは、数値の実数リテラルがDecimalであることを指定します。

浮動小数点値(Doubleなど)の演算は不正確であるため、これは実際に知っておくことが重要です。例えば:

object decimalValue=(5.32 + 2.23);

ここで、decimalValueには実際にはDoubleが含まれ、予期しない値は7.5500000000000007になります。7.55が必要な場合、これを行うことができます。

object decimalValue=(5.32m + 2.23m);

より一般的なサフィックスがあるかどうかについての質問に答えるために、mはC#のDecimal の唯一のサフィックスです。あなたが言ったようにそれはお金のために立つかもしれません、しかしそれはダブルによって使用されているので、彼らはd以外のものを使用していました!

参考資料10進数(C#リファレンス)


1
ありがとうございます。あなたが回答を入力したとおりに、msdn-linkを確認して質問に入れました。しかし、サフィックスのためにこの投稿に来る人々に大いに役立つ素晴らしいリストがあるので、私はハンス・パッサントの投稿を受け入れました。しかし、決定的に感謝します。
HCL

0

C#でDecimal宣言するための短い回答

decimal firstMoney = 141.28m;

O / P: 141.28

decimal secondMoney = 100.00m;

O / P: 100

詳細については、MSDNを参照してください。

希望は誰かを助けます。


@トーマス、私は理解していますが、10進数を宣言することを検索している人に短い答えを出そうとしましたが、投稿を削除する必要がありますか?、あなたはそれが役に立たないと思いますか?
shaijut 2016年

3
はそれを役に立たない見ていますが、私は完璧には程遠く、他の人を助けるかもしれません。2回目の読み取りで役に立たない場合は、削除できます。誰かの役に立つと思うなら、そのままにしておいてください:)
Thomas Ayoub

2
@ThomasAyoub個人的には、これがハンスの回答がまだカバーしていないことを何が追加するのか見ないでください。
Lankymart
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.