在java中转换

use*_*679 4 java

我的问题是关于java中的转换.我有一个整数1615021049.当除以1(这也是一个浮点数)时,我得到的答案是1.61502106E9,当转换回整数时给我1615021056这不是原始数字.请帮助.如果我将变量m和b转换为double,则同样正常工作.

int a=1615021023;
float m=1;
float b=a/m;
int d= (int) b;
Run Code Online (Sandbox Code Playgroud)

NPE*_*NPE 5

问题是,float尾数的位数太少,无法准确表示1615021049.后者需要31位,前者仅提供23.因此精度损失.

这不是问题,doubles因为a double有52位的尾数,足以代表1615021049.

维基百科.