C/C#/などでは、リテラル番号が表示されるものではないことをコンパイラーに伝えることができます(つまり、float
ではなくdouble
、int
ではなくunsigned long
:
var d = 1.0; // double
var f = 1.0f; // float
var u = 1UL; // unsigned long
等.
誰かが私にこれらのリストを教えてもらえますか?特にshort
またはInt16
のサフィックスを探しています。
var d = 1.0d; // double
var d0 = 1.0; // double
var d1 = 1e+3; // double
var d2 = 1e-3; // double
var f = 1.0f; // float
var m = 1.0m; // decimal
var i = 1; // int
var ui = 1U; // uint
var ul = 1UL; // ulong
var l = 1L; // long
それがすべてだと思います... short/ushort/byte/sbyteのリテラル指定子はありません
§2.4.4.2整数リテラル から:
整数リテラルのタイプは、次のように決定されます。
- リテラルに接尾辞がない場合、値を表すことができるこれらのタイプの最初のものがあります:
int
、uint
、long
、ulong
。- リテラルの接尾辞が
U
またはu
である場合、その値を表すことができるこれらのタイプのうち最初のものがあります:uint
、ulong
。- リテラルの接尾辞が
L
またはl
である場合、その値を表すことができるこれらのタイプのうち最初のものがあります:long
、ulong
。- リテラルの接尾辞が
UL
、Ul
、uL
、ul
、LU
、Lu
、lU
、またはlu
の場合、タイプはulong
です。
そして §2.4.4.3実際のリテラル から:
実数型の接尾辞が指定されていない場合、実数リテラルの型はdoubleです。それ以外の場合、実数型の接尾辞は、次のように実数リテラルの型を決定します。
F
またはf
の接尾辞が付いた実際のリテラルは、タイプfloat
です。たとえば、リテラル1f
、1.5f
、1e10f
、および123.456F
はすべてfloat
型です。D
またはd
の接尾辞が付いた実際のリテラルは、タイプdouble
です。たとえば、リテラル1d
、1.5d
、1e10d
、および123.456D
はすべてdouble
型です。M
またはm
の接尾辞が付いた実際のリテラルは、タイプdecimal
です。たとえば、リテラル1m
、1.5m
、1e10m
、および123.456M
はすべてdecimal
型です。このリテラルは、正確な値を取得し、必要に応じて銀行家の丸めを使用して最も近い表現可能な値に丸めることにより、10進値に変換されます(セクション4.1.7)。値が丸められるか、値がゼロでない場合(後者の場合、符号とスケールは0になります)を除き、リテラルに表示されるスケールは保持されます。したがって、リテラル2.900m
が解析され、符号0
、係数2900
、およびスケール3
を含む10進数が形成されます。
変数がまだ短くない場合は、明示的にキャストする必要があります。
Object s = (Int16) 1;
短いものはありません。 short s = 1;
を使用してください。