У меня есть два целых числа x
и y
. Мне нужно рассчитать, x/y
и в результате я бы хотел получить плавающий. Например в результате 3/2
хотелось бы иметь 1.5. Я думал , что самый простой (или единственный) способ сделать это , чтобы преобразовать x
и y
в тип с плавающей точкой. К сожалению, я не могу найти простой способ сделать это. Не могли бы вы помочь мне с этим?
java
integer
floating-point
Роман
источник
источник
BigDecimal
не является универсально правильной заменой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.
Однако я считаю, что double можно использовать в большинстве случаев при условии разумного округления .
В этом случае int x имеет 32-битную точность, тогда как float имеет 24-битную точность, даже деление на 1 может иметь ошибку округления. double, с другой стороны, имеет 53-битную точность, чего более чем достаточно для получения достаточно точного результата.
источник
double
лучше чемfloat
.Вам просто нужно передать первое значение в float, прежде чем оно будет вовлечено в дальнейшие вычисления:
float z = x * 1.0 / y;
источник
// Целое число, которое я хочу преобразовать
int myInt = 100;
// Приведение целого числа к float
float newFloat = (float) myInt
источник
Вот как это сделать:
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); }
Увидимся !
источник
Float
Для этого совершенно не нужно использовать обертку type ( ).Самир:
float l = new Float(x/y)
не будет работать, так как он сначала вычислит целочисленное деление x и y, а затем построит из него float.
float result = (float) x / (float) y;
Семантически лучший кандидат.
источник