我有一个int:
int f=1234;//or f=23 f=456 ...
我想得到:
float result=0.1234; // or 0.23 0.456 ...
不要使用:
float result = parseFloat ("0."+f);
最好的办法是什么?
感谢
答案 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