web-dev-qa-db-fra.com

Comment puis-je convertir un entier en float en Java?

J'ai deux entiers x et y. J'ai besoin de calculer x/y et, comme résultat, j'aimerais obtenir une valeur flottante. Par exemple, à la suite de 3/2, j'aimerais avoir 1,5. Je pensais que la façon la plus simple (ou la seule) de le faire était de convertir x et y en type float. Malheureusement, je ne trouve pas de moyen facile de le faire. Pourriez-vous s'il vous plaît m'aider avec ça?

74
Roman

Vous avez juste besoin de cast au moins un des opérandes à un float:

float z = (float) x / y;

ou

float z = x / (float) y;

ou (inutile)

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

Il vous suffit de transférer la première valeur à float avant qu'elle ne soit impliquée dans d'autres calculs:

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

Vous ne devriez pas utiliser float sauf si vous devez le faire. Dans 99% des cas, le double est un meilleur choix.

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

empreintes

f= 111111.12
d= 111111.1111

Suite au commentaire de @ Matt.

float a très peu de précision (6-7 chiffres) et montre assez facilement une erreur d’arrondi importante. double a encore 9 chiffres de précision. Le coût d'utilisation de double au lieu de float est théorique dans 99% des cas, mais le coût d'un bug subtil dû à une erreur d'arrondi est beaucoup plus élevé. Pour cette raison, de nombreux développeurs recommandent de ne pas utiliser de virgule flottante et recommandent fortement BigDecimal.

Cependant, je trouve que le double peut être utilisé dans la plupart des cas à condition que l’arrondi sensible soit utilisé .

Dans ce cas, int x a une précision de 32 bits alors que float a une précision de 24 bits, même en divisant par 1, il pourrait y avoir une erreur d'arrondi. double par contre a 53 bits de précision, ce qui est plus que suffisant pour obtenir un résultat raisonnablement précis.

5
Peter Lawrey

Voici comment vous pouvez le faire:

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

À plus !

3
LaGrandMere

// Le nombre entier que je veux convertir

int myInt = 100;

// Lancer un entier en float

float newFloat = (float) myInt
3
tej shah

Sameer:

float l = new Float(x/y)

ne fonctionnera pas, car il calculera la division entière de x et y en premier, puis construira un float à partir de celui-ci.

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

Est sémantiquement le meilleur candidat.

1
LostOblivion