как получить поплавок от int - PullRequest
1 голос
/ 14 октября 2010

у меня есть int:

int f=1234;//or f=23 f=456 ...

я хочу получить:

float result=0.1234; // or 0.23 0.456 ...

не использует:

float result = parseFloat ("0."+f);

Какой лучший способ сделать?

спасибо

Ответы [ 4 ]

10 голосов
/ 14 октября 2010

Как насчет?

float result = f/1000.0f;

В более общем случае, если вам нужно задать целое число для различных значений f, вы можете сделать что-то вроде этого:кратко с логарифмами:

float result = f / Math.pow(10, Math.floor(Math.log10(f))+1);
2 голосов
/ 14 октября 2010
f/Math.pow(10,Integer.toString(f).length());

Найдите длину целого числа, сначала преобразовав его в String и используя метод String length ().

  • Возможно, есть более умные способы сделать это.

__ _ РЕДАКТИРОВАТЬ _ __ _

f/Math.pow(10,Math.ceil(Math.log10(Math.abs(f)+1)));

Обрабатывает негативы (и использует журнал).

1 голос
/ 14 октября 2010

Я думаю, что ваше решение работает лучше, чем большинство предложенных ответов ... Немного изменил его, чтобы охватить и отрицательные числа.

int f=1234;
if (f<0)
    result = -1.0f*parseFloat ("0."+(-f));
else
    result = parseFloat ("0."+f);

Тем не менее не получается на Integer.MIN_VALUE, хотя и отметим потерю точности.Например:

int f=2147483647; //gives 
result == 0.21474837f
0 голосов
/ 14 октября 2010

Я думаю, что он имеет в виду: «Как мне указать буквенное число с плавающей запятой?»

float f = .1234f;  // Note the trailing f
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...