Как я могу преобразовать целое число в число с плавающей точкой в ​​Java? - PullRequest
71 голосов
/ 07 декабря 2010

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

Ответы [ 6 ]

131 голосов
/ 07 декабря 2010

Вам просто нужно привести хотя бы к одному из операндов с плавающей точкой:

float z = (float) x / y;

или

float z = x / (float) y;

или (необязательно)

float z = (float) x / (float) y;
5 голосов
/ 28 апреля 2012

Вам просто нужно перевести первое значение в число с плавающей точкой, прежде чем оно будет задействовано в дальнейших вычислениях:

5 голосов
/ 07 декабря 2010

Вы не должны использовать float, если нет необходимости.В 99% случаев лучше выбрать double.

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 имеет очень небольшую точность (67 цифр) и показывает значительную ошибку округления довольно легко.двойной имеет еще 9 цифр точности.Стоимость использования double вместо float является условной в 99% случаев, однако стоимость незначительной ошибки из-за ошибки округления намного выше.По этой причине многие разработчики рекомендуют вообще не использовать плавающую точку и настоятельно рекомендуют BigDecimal.

Однако я считаю, что в большинстве случаев можно использовать double при условии разумного округления .

В этом случае int x имеет 32-битовая точность, тогда как float имеет 24-битную точность, даже деление на 1 может иметь ошибку округления.double, с другой стороны, имеет 53-битную точность, что более чем достаточно для получения достаточно точного результата.

3 голосов
/ 22 декабря 2015

// Целое число, которое я хочу преобразовать

int myInt = 100;

// Приведение целого числа к числу с плавающей точкой

float newFloat = (float) myInt
3 голосов
/ 07 декабря 2010

Вот как вы можете это сделать:

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);
}

До встречи!

1 голос
/ 28 апреля 2012

Sameer: ​​

float l = new Float(x/y)

не будет работать, так как сначала он вычислит целочисленное деление x и y, а затем построит из него число с плавающей точкой.

float result = (float) x / (float) y;

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

...