これは本当に基本的な質問ですが、なぜこれが問題なのかを教えてください。結果が10進数でなければならない場合でも、varはintにキャストされます
var number = 7/2; // number is 3
decimal number = 7 /2; // still number is 3
なぜ数字が3.5ではないのですか?なぜそれは常にintにキャストされますか?数字は両方ともintなので?これは、数値のいずれかを10進数にキャストするときに機能します。
これは本当に基本的な質問ですが、なぜこれが問題なのかを教えてください。結果が10進数でなければならない場合でも、varはintにキャストされます
var number = 7/2; // number is 3
decimal number = 7 /2; // still number is 3
なぜ数字が3.5ではないのですか?なぜそれは常にintにキャストされますか?数字は両方ともintなので?これは、数値のいずれかを10進数にキャストするときに機能します。
リテラル7
と2
を使用しています。したがって、除算はの整数部であり、int
の値が3
になります。 var
キーワードを使用
、コンパイラ型int
の最初の行であることにnumber
につながる表現から正しいタイプを推測。 2行目
は、明示的に小数点としてnumber
を宣言し、その7/2
によって返さint
はdecimal
にキャストされます。
あなたは結果がdecimal
になりたい場合は、あなたがm
で正しいリテラル語尾を使用する必要があります。
var number = 7/2m;
あなたは2つの整数を分割している、結果は常に整数です。 – Steve
分母は2(2.0に変更)なので、コンパイラは結果の小数部分を切り捨てます。 – jdweng
式* 7/2 *(型 'int' /' int')は、整数除算を使用するので、整数値3に評価されます。 –