走ると、
public static void main(String[] args)
{
float num = 145/156;
System.out.println(num);
}
出力は 0.0 ですが、予想される出力は 0.92948717 です。どんな助けでも大歓迎です。
走ると、
public static void main(String[] args)
{
float num = 145/156;
System.out.println(num);
}
出力は 0.0 ですが、予想される出力は 0.92948717 です。どんな助けでも大歓迎です。
整数を整数に除算すると、整数になります。 したがって、データが切り捨てられているため、0 になっています。
これをフロートするには型キャストする必要があります
float num = (float)145/156;
145/156
は ですが、デフォルトの数値はJava のように0.something
コーディングされているため、結果が切り捨てられるため、後の数値が失われます。int
0
どちらか一方をキャストする必要があります (もう一方は暗黙的にキャストされます)。
使用する
public static void main(String[] args)
{
float num = (float)145/156;
System.out.println(num);
}
as, 145/156
is int/int
, so result is 0, type casted to float ie 0.0
145 と 146 のリテラルは整数で、/ は整数除算です。
145f (f は float を表す) だけを使用して、10 進数の除算を強制するようにしてください。
使用した数値は整数です。Java の整数除算は整数になります。次のように、変換と適切な浮動小数点演算を強制するために最初の数値を float にキャストする以外に、次のようにします。
float num = (float)145/156;
次のような式を書くこともできます。
float num = 145f/156;
このようにf
、最後に追加することで、数値145f
は float として解釈されます。
145/156
このように浮かぶように キャストfloat num = (float)145/156;
cast
オペランドの少なくとも 1 つを float にする必要があるだけです
float num = (float) 145 / 156;
また
float num = 145 / (float) 156;
145
と156
は両方とも typeint
であるため、結果は整数として「解釈」され (ドットの後ろはすべて切り捨てられるため、0.92948717 は 0 になります)、 type の変数に保存され、float
として表示され0.0
ます。
両方の数値の少なくとも 1 つを float にキャストして、結果を float として処理するようにマシンに通知します。
float num = (float) 145 / 156;
または、数値の末尾に を付けて、数値をf
float として「解釈」するようにマシンに通知することもできます。
float num = 145f / 156;
ここであなたがしていることは次のようなものです、
int a = 145;
int b = 156;
float num = a/b;
そのため、最後にポイント ゼロが得られます。したがって、期待される出力を取得するには、最初に次のようにキャストする必要があります
float num = (float) a/b;