2016-01-16 48 views

回答

2

我假设你正在寻找可以用int而不是float表示的数字。其中之一是Integer.MAX_VALUE

int i = Integer.MAX_VALUE; 
float f = i;  // or 2147483647f 
System.out.println(i); 
System.out.println(String.format("%f", f)); 

显示

2147483647 
2147483648.000000 

这是因为虽然两者都具有32-bits一个float划分要被用于符号(1 bit),指数(8 bits)和有效数或尾数位(23 bits) 。

+0

但它为什么显示'2147483648.000000'它是'2^31'多于浮动可以容纳,对不对? –

+1

由于指数的原因,'float'可以保存比'int'更大的值。尝试打印“Float.MAX_VALUE”的值。 – marstran

+1

@Rudziankoŭ浮点数可以比'32位int'保持更大的*值,但它的精度*(至少在用整数测量时,如我的文章所见)。 – Kayaman