如何从int获取浮点数

时间:2010-10-13 22:05:09

标签: java math

我有一个int:

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

我想得到:

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

不要使用:

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

最好的办法是什么?

感谢

4 个答案:

答案 0 :(得分:10)

怎么样?

float result = f/1000.0f;

更一般地说,如果您需要为f的各种值调整整数大小,您可以执行以下操作:

int divisor;
for(divisor = 1; f / divisor > 0; divisor *= 10);
float result = (float)f/(float)divisor;

或者更简洁地用对数:

float result = f / Math.pow(10, Math.floor(Math.log10(f))+1);

答案 1 :(得分:2)

f/Math.pow(10,Integer.toString(f).length());

首先通过首先将其转换为String并使用String length()方法来查找Integer的长度。

  • 可能有更聪明的方法。

__ _ 修改 _ __ _

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

处理否定(并使用日志)。

答案 2 :(得分:1)

我认为您的解决方案比大多数建议的解决方案效果更好......更改了一些内容以覆盖负数。

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

答案 3 :(得分:0)

我认为他的意思是“如何指定文字浮点数?”

float f = .1234f;  // Note the trailing f