Как преобразовать целое число в float в Java?
У меня есть два целых числа x
и y
. Мне нужно вычислить x/y
и в качестве результата я хотел бы получить float. Например, в результате 3/2
я хотел бы иметь 1.5. Я думал, что самый простой (или единственный) способ сделать это – преобразовать x
и y
в тип float. К сожалению, я не могу найти простой способ сделать это. Не могли бы вы мне помочь?
- почему f помещается после значений float?
- Как вы объедините число с плавающей запятой в Perl?
- Точность с плавающей запятой C ++
- Усечение Десятичное число не округлено
- Как я могу написать функцию питания самостоятельно?
- Как обнаружить переполнение и переполнение двойной точки с двойной точностью?
- В MATLAB переменные ДЕЙСТВИТЕЛЬНО двойной точности по умолчанию?
- Сравнение с плавающей точкой
Вам просто нужно включить хотя бы один из операндов в float:
float z = (float) x / y;
или
float z = x / (float) y;
или (не требуется)
float z = (float) x / (float) y;
Вы не должны использовать 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.
Однако я считаю, что двойной может использоваться в большинстве случаев, если используется разумное округление .
В этом случае int x имеет 32-битную точность, тогда как float имеет 24-битную точность, даже деление на 1 может иметь ошибку округления. double, с другой стороны, имеет 53-битную точность, которой более чем достаточно, чтобы получить достаточно точный результат.
Вам просто нужно перенести первое значение на float, прежде чем оно будет вовлечено в дальнейшие вычисления:
float z = x * 1.0 / y;
Вот как вы можете это сделать:
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
float newFloat = (float) myInt
Самир:
float l = new Float(x/y)
не будет работать, поскольку он сначала вычислит целочисленное деление x и y, а затем построит поплавок.
float result = (float) x / (float) y;
Семантически лучший кандидат.