0

走ると、

public static void main(String[] args)
{
   float num = 145/156;
   System.out.println(num);
}

出力は 0.0 ですが、予想される出力は 0.92948717 です。どんな助けでも大歓迎です。

4

11 に答える 11

5

整数を整数に除算すると、整数になります。 したがって、データが切り捨てられているため、0 になっています。

これをフロートするには型キャストする必要があります

float num = (float)145/156;
于 2013-10-28T11:18:30.933 に答える
2

145/156は ですが、デフォルトの数値はJava のように0.somethingコーディングされているため、結果が切り捨てられるため、後の数値が失われます。int0

どちらか一方をキャストする必要があります (もう一方は暗黙的にキャストされます)。

于 2013-10-28T11:19:30.283 に答える
1

使用する

 public static void main(String[] args)
{
  float num = (float)145/156;
  System.out.println(num);
}

as, 145/156is int/int, so result is 0, type casted to float ie 0.0

于 2013-10-28T11:18:26.307 に答える
1

145 と 146 のリテラルは整数で、/ は整数除算です。

145f (f は float を表す) だけを使用して、10 進数の除算を強制するようにしてください。

于 2013-10-28T11:21:26.310 に答える
0

使用した数値は整数です。Java の整数除算は整数になります。次のように、変換と適切な浮動小数点演算を強制するために最初の数値を float にキャストする以外に、次のようにします。

float num = (float)145/156;

次のような式を書くこともできます。

float num = 145f/156;

このようにf、最後に追加することで、数値145fは float として解釈されます。

于 2013-10-28T11:28:48.167 に答える
0

145/156このように浮かぶように キャストfloat num = (float)145/156;

于 2013-10-28T11:19:09.117 に答える
0

castオペランドの少なくとも 1 つを float にする必要があるだけです

float num = (float) 145 / 156;

また

float num = 145 / (float) 156;
于 2013-10-28T11:21:31.230 に答える
0

145156は両方とも typeintであるため、結果は整数として「解釈」され (ドットの後ろはすべて切り捨てられるため、0.92948717 は 0 になります)、 type の変数に保存され、floatとして表示され0.0ます。

両方の数値の少なくとも 1 つを float にキャストして、結果を float として処理するようにマシンに通知します。

float num = (float) 145 / 156;

または、数値の末尾に を付けて、数値をffloat として「解釈」するようにマシンに通知することもできます。

float num = 145f / 156;
于 2013-10-28T11:21:58.043 に答える
0

ここであなたがしていることは次のようなものです、

int a = 145;
int b = 156;
float num = a/b;

そのため、最後にポイント ゼロが得られます。したがって、期待される出力を取得するには、最初に次のようにキャストする必要があります

float num = (float) a/b;
于 2013-10-28T11:22:04.493 に答える