x
とy
という2つの整数があります。 x/y
を計算する必要があり、結果としてfloatを取得したいと思います。たとえば、3/2
の結果として、1.5が欲しいです。最も簡単な(または唯一の)方法は、x
とy
をfloat型に変換することだと思いました。残念ながら、私はそれを行う簡単な方法を見つけることができません。それで私を助けてくれませんか?
cast floatのオペランドの少なくとも1つが必要です:
float z = (float) x / y;
または
float z = x / (float) y;
または(不要)
float z = (float) x / (float) y;
次の計算に関与する前に、最初の値をfloatに転送するだけです。
float z = x * 1.0 / y;
必要がない限り、floatを使用しないでください。 99%のケースでは、doubleの方が適しています。
int x = 1111111111;
int y = 10000;
float f = (float) x / y;
double d = (double) x / y;
System.out.println("f= "+f);
System.out.println("d= "+d);
プリント
f= 111111.12
d= 111111.1111
@Mattのコメントに続きます。
floatの精度は非常に低く(6〜7桁)、かなり簡単に重大な丸め誤差が表示されます。 doubleの精度はさらに9桁です。 floatの代わりにdoubleを使用するコストは、99%のケースで概念的ですが、丸め誤差による微妙なバグのコストははるかに高くなります。このため、多くの開発者は浮動小数点をまったく使用しないことをお勧めし、BigDecimalを強くお勧めします。
しかし、ほとんどの場合、doubleを使用できることがわかります賢明な丸めが使用される場合.
この場合、int xの精度は32ビットですが、floatの精度は24ビットです。1で除算しても丸め誤差が生じる可能性があります。一方、doubleには53ビットの精度があり、かなり正確な結果を得るには十分です。
これを行う方法を次に示します。
public static void main(String[] args) {
// TODO Auto-generated method stub
int x = 3;
int y = 2;
Float fX = new Float(x);
float res = fX.floatValue()/y;
System.out.println("res = "+res);
}
またね !
//変換したい整数
int myInt = 100;
//整数から浮動小数点へのキャスト
float newFloat = (float) myInt
Sameer:
float l = new Float(x/y)
最初にxとyの整数除算を計算し、それからfloatを構築するため、機能しません。
float result = (float) x / (float) y;
意味的に最適な候補です。