8

intを100で割るにはどうすればよいですか?

例えば:

int x = 32894;
int y = 32894 / 100;

なぜこれが存在することにyなり328、そうでないの328.94ですか?

4

5 に答える 5

18

ある整数を別の整数で除算すると、算術演算は整数演算として実行されます。

浮動小数点、2進、または10進演算として実行する場合は、値の1つを適切にキャストする必要があります。例えば:

decimal y = ((decimal) x) / 100;

のタイプも変更したことに注意してくださいy。10進演算を実行しても、結果を。に格納することは意味がありませんintintおそらく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"

を使用するdecimaldoublefloatを使用するかは、何をしようとしているかによって異なります。10進浮動小数点2進浮動小数点に関する私の記事を読んでください。通常double、身長や体重などの「自然な」量を扱う場合は適切です。この場合値は実際には概算になります。decimalは、お金などの人工的な量に適しています。これらの量は、通常、最初は10進値として正確に表されます。

于 2011-03-09T07:09:01.347 に答える
3

intは整数にすぎないからです。代わりにこれを試してください。

int x = 32894;
double y = x / 100.0;
于 2011-03-09T07:08:48.110 に答える
3

328.94は整数ではありません。整数/除算は切り捨てられます。それがどのように機能するかです。

10進数にキャストすることをお勧めします。

decimal y = 32894M / 100;

または変数付き:

decimal y = (decimal)x / 100;
于 2011-03-09T07:09:04.613 に答える
0

整数除算をしているからです。100の後ろにピリオドを追加すると、代わりにダブルが得られます。

2つの整数を除算すると、結果は整数になります。整数には小数点以下の桁がないため、切り捨てられるだけです。

于 2011-03-09T07:08:28.527 に答える
0

int(整数)除算はfloat(浮動小数点)除算とは異なるというプログラミングの基本です。

.94が必要な場合は、floatまたはdoubleを使用してください

var num = 3294F/100F
于 2011-03-09T07:09:06.660 に答える