У меня есть два целых числа x
и y
. Мне нужно вычислить x/y
, и в качестве результата я хотел бы получить float. Например, в качестве результата 3/2
я хотел бы иметь 1.5. Я думал, что самый простой (или единственный) способ сделать это - преобразовать x
и y
в тип float. К сожалению, я не могу найти простой способ сделать это. Не могли бы вы помочь мне с этим?
Как преобразовать целое число в float в Java?
Ответ 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;
Семантически лучший кандидат.