int
を100で割るにはどうすればよいですか?
例えば:
int x = 32894;
int y = 32894 / 100;
なぜこれが存在することにy
なり328
、そうでないの328.94
ですか?
ある整数を別の整数で除算すると、算術演算は整数演算として実行されます。
浮動小数点、2進、または10進演算として実行する場合は、値の1つを適切にキャストする必要があります。例えば:
decimal y = ((decimal) x) / 100;
のタイプも変更したことに注意してくださいy
。10進演算を実行しても、結果を。に格納することは意味がありませんint
。int
おそらく328.94を保存することはできません。
値の1つを正しいタイプに強制するだけで、もう1つは同じタイプにプロモートされます。たとえば、小数を整数で除算するための演算子は定義されていません。複数の値を使用して算術演算を実行している場合は、わかりやすくするために、すべての値を目的のタイプに強制することができます。1つの演算が整数演算を使用して実行され、別の演算が二重演算を使用して実行されるのは残念です。両方とも2倍になると予想されます。
リテラルを使用している場合は、代わりに接尾辞を使用してタイプを示すことができます。
decimal a = x / 100m; // Use decimal arithmetic due to the "m"
double b = x / 100.0; // Use double arithmetic due to the ".0"
double c = x / 100d; // Use double arithmetic due to the "d"
double d = x / 100f; // Use float arithmetic due to the "f"
を使用するdecimal
かdouble
、float
を使用するかは、何をしようとしているかによって異なります。10進浮動小数点と2進浮動小数点に関する私の記事を読んでください。通常double
、身長や体重などの「自然な」量を扱う場合は適切です。この場合、値は実際には概算になります。decimal
は、お金などの人工的な量に適しています。これらの量は、通常、最初は10進値として正確に表されます。
intは整数にすぎないからです。代わりにこれを試してください。
int x = 32894;
double y = x / 100.0;
328.94は整数ではありません。整数/
除算は切り捨てられます。それがどのように機能するかです。
10進数にキャストすることをお勧めします。
decimal y = 32894M / 100;
または変数付き:
decimal y = (decimal)x / 100;
整数除算をしているからです。100の後ろにピリオドを追加すると、代わりにダブルが得られます。
2つの整数を除算すると、結果は整数になります。整数には小数点以下の桁がないため、切り捨てられるだけです。
int(整数)除算はfloat(浮動小数点)除算とは異なるというプログラミングの基本です。
.94が必要な場合は、floatまたはdoubleを使用してください
var num = 3294F/100F