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

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

Вам просто нужно включить хотя бы один из операндов в 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; 

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

  • Как определить число с плавающей запятой, используя регулярное выражение
  • Библиотека высокой точности с плавающей запятой Java
  • Сохранять точность с двойным в Java
  • Каким детерминированным является неточность с плавающей запятой?
  • Когда следует использовать double вместо десятичного?
  • Имеет ли float отрицательный ноль? (-0f)
  • Каков всеобъемлющий диапазон float и double в Java?
  • Как проверить, что строка обрабатывается двойным?
  • Что на самом деле делает fcc-math gcc?
  • проблема с плавающей запятой в R?
  • Преобразовать float в строку с заданной точностью и количеством десятичных цифр?
  • Давайте будем гением компьютера.