web-dev-qa-db-ja.com

Javaで整数を浮動小数点に変換するにはどうすればよいですか?

xyという2つの整数があります。 x/yを計算する必要があり、結果としてfloatを取得したいと思います。たとえば、3/2の結果として、1.5が欲しいです。最も簡単な(または唯一の)方法は、xyをfloat型に変換することだと思いました。残念ながら、私はそれを行う簡単な方法を見つけることができません。それで私を助けてくれませんか?

74
Roman

cast floatのオペランドの少なくとも1つが必要です:

float z = (float) x / y;

または

float z = x / (float) y;

または(不要)

float z = (float) x / (float) y;
134
Matt Ball

次の計算に関与する前に、最初の値をfloatに転送するだけです。

float z = x * 1.0 / y;
5
user unknown

必要がない限り、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ビットの精度があり、かなり正確な結果を得るには十分です。

5
Peter Lawrey

これを行う方法を次に示します。

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);
}

またね !

3
LaGrandMere

//変換したい整数

int myInt = 100;

//整数から浮動小数点へのキャスト

float newFloat = (float) myInt
3
tej shah

Sameer:

float l = new Float(x/y)

最初にxとyの整数除算を計算し、それからfloatを構築するため、機能しません。

float result = (float) x / (float) y;

意味的に最適な候補です。

1
LostOblivion