У меня есть два целых числа: x
и y
. Мне нужно вычислить x/y
, и в качестве результата я хотел бы получить float. Например, в результате 3/2
я хотел бы иметь 1.5. Я думал, что самый простой (или единственный) способ сделать это - преобразовать x
и y
в тип float. К сожалению, я не могу найти простой способ сделать это. Не могли бы вы мне помочь?Как преобразовать целое число в float в Java?
ответ
Вам просто нужно бросить по крайней мере один из операндов с плавающей точкой:
float z = (float) x/y;
или
float z = x/(float) y;
или (ненужную)
float z = (float) x/(float) y;
Является ли это более эффективным, чем: float z = (1.0 * x)/y; ? Является ли плавающее преобразование внутренне более эффективным, чем умножение? Tnx! – MSquare
Я не знаю, но я думаю, что это не имеет значения 99% и более того времени. Это даже не отдаленно будет узким местом. Если вы действительно так обеспокоены, [сравните его сами.] (Http://stackoverflow.com/q/504103/139010) –
Первый и второй вызовет ошибки на некоторых устройствах ручного управления, убедитесь, что вы выбрали оба целых числа. –
Вот как вы можете это сделать:
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') для этого совершенно необязательно. –
Вы совершенно правы, ваш ответ намного лучше :) – LaGrandMere
Пожалуйста, [не используйте подписи или метки] (http://stackoverflow.com/faq#signatures) в своих сообщениях. – meagar
Вы не должны использовать поплавок, если только не нужно. В 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
После @ комментария Мэтта.
Поплавок имеет очень небольшую точность (6-7 цифр) и довольно значительную ошибку округления. double имеет еще 9 цифр точности. Стоимость использования double вместо float условна в 99% случаев, однако стоимость тонкой ошибки из-за ошибки округления намного выше. По этой причине многие разработчики рекомендуют не использовать с плавающей точкой вообще и настоятельно рекомендую BigDecimal.
Однако я считаю, что двойное может быть использован в большинстве случаев при условии разумного округления используется.
В этом случае int x имеет 32-битную точность, тогда как float имеет 24-битную точность, даже деление на 1 может иметь ошибку округления. double, с другой стороны, имеет 53-битную точность, которой более чем достаточно, чтобы получить достаточно точный результат.
Вы должны подробно остановиться на _why_ 'double' лучше, чем' float'. –
Самир:
float l = new Float(x/y)
не будет работать, так как она будет вычислять деления на целое число х и у первого, а затем построить поплавок из него.
float result = (float) x/(float) y;
Семантически лучший кандидат.
Ваш ответ должен был быть комментарием. Самир не получит уведомления о вашем сообщении. Семантически преобразование обоих ints для float перед вычислением результата бесполезно - поэтому оно не лучше, чем преобразование только одного. Это дает неправильное впечатление и, следовательно, уступает, imho. –
Вам просто нужно перевести первое значение плавать, прежде чем он будет участвовать в дальнейших вычислениях:
float z = x * 1.0/y;
// Целое Я хочу, чтобы преобразовать
int myInt = 100;
// Литье целое для плавания
float newFloat = (float) myInt
- 1. Как преобразовать float в целое число?
- 2. SSE: преобразовать короткое целое число в float
- 3. Как преобразовать целое число в float в Delphi?
- 4. Как преобразовать значение float в целое число в php?
- 5. Как преобразовать целое число в float и наоборот в Ada?
- 6. Конвертировать из Float в целое число
- 7. Как преобразовать float в integer в Java
- 8. Как преобразовать float в десятичное целое число, равное 2?
- 9. Как преобразовать общее значение float в соответствующее целое число?
- 10. PostgreSQL: Как преобразовать строку с числом float в целое число?
- 11. Java, как преобразовать десятичное число как строку в целое число
- 12. Java: преобразовать байт в целое число
- 13. Преобразовать целое число в datetime java
- 14. преобразовать целое число в символ
- 15. Как преобразовать запись tkinter в целое число
- 16. java - Невозможно преобразовать целое число в int
- 17. C++ преобразовать float в hex используя только математическое целое число
- 18. Ошибка Streamplot: невозможно преобразовать float NaN в целое число
- 19. как преобразовать целое число в массив элементов, равных целое число
- 20. Как преобразовать целое число в int?
- 21. Как преобразовать целое число [] в int []?
- 22. Как преобразовать время в строку в целое число в Java?
- 23. преобразовать символ в целое число
- 24. Преобразовать значение в целое число
- 25. Как преобразовать вход сканера в целое число?
- 26. Как преобразовать целое число в байт?
- 27. преобразовать целое число в массив
- 28. Преобразовать поле «Число» в целое число?
- 29. Преобразовать целое число в массив
- 30. Как преобразовать большое целое число в байты
float result = ((float) x)/y? – mibollma
проверить это: http://xahlee.org/java-a-day/casting.html – fasseg
Возможный дубликат [Java: разделение 2 ints делает int?] (Http://stackoverflow.com/questions/787700/ java-divisioning-2-ints-make-an-int) – dogbane