Подтвердить что ты не робот

Как преобразовать целое число в float в Java?

У меня есть два целых числа x и y. Мне нужно вычислить x/y, и в качестве результата я хотел бы получить float. Например, в качестве результата 3/2 я хотел бы иметь 1.5. Я думал, что самый простой (или единственный) способ сделать это - преобразовать x и y в тип float. К сожалению, я не могу найти простой способ сделать это. Не могли бы вы помочь мне с этим?

4b9b3361

Ответ 1

Вам просто нужно отличить по крайней мере один из операндов для float:

float z = (float) x / y;

или

float z = x / (float) y;

или (необязательно)

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

Ответ 2

Вы не должны использовать float, если вам не нужно. В 99% случаев двойной выбор - лучший выбор.

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 цифр точности. Стоимость использования double вместо float условна в 99% случаев, однако стоимость тонкой ошибки из-за ошибки округления намного выше. По этой причине многие разработчики рекомендуют не использовать с плавающей точкой вообще и настоятельно рекомендую BigDecimal.

Однако я считаю, что double может использоваться в большинстве случаев при условии, что используется разумное округление.

В этом случае int x имеет 32-битную точность, тогда как float имеет 24-битную точность, даже деление на 1 может иметь ошибку округления. double с другой стороны имеет 53-битную точность, которой более чем достаточно, чтобы получить достаточно точный результат.

Ответ 3

Вам просто нужно перенести первое значение в float, прежде чем оно будет вовлечено в дальнейшие вычисления:

float z = x * 1.0 / y;

Ответ 4

Вот как вы можете это сделать:

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

Увидимся!

Ответ 5

//Целое число, которое я хочу преобразовать

int myInt = 100;

//Приведение целого числа в float

float newFloat = (float) myInt

Ответ 6

Самир:

float l = new Float(x/y)

не будет работать, поскольку он сначала вычислит целочисленное деление x и y, а затем построит из него float.

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

Семантически лучший кандидат.