日期:2014-05-20  浏览次数:20715 次

关于四舍五入取小数点2位
int f=(int)(A*100+0.5);
double F=(double)f/100;

为什么这样输出的F就是能去到小数点2位的呢?
------解决方案--------------------
int f
中就已经把小数的部分给去掉了啊。
再转回来也不会提高精度的。
------解决方案--------------------
在强转的时候  自动过滤掉了
------解决方案--------------------
楼上这么一说我也好像有点明白了
 应该是你的  f  已经强制转换成一个整数了,所以你在后面用  f/100  算出来的数最多也就俩位小数点啊
不知道是不是这么个意思
------解决方案--------------------
public static void main(String[] args) {
//没损失精度的
double g=(1.211111*100+0.5);
System.out.println("g====="+g);
double G = g/100;
System.out.println("G====="+G);
//下面是损失精度后的
int f=(int)(1.211111*100+0.5);
System.out.println("f====="+f);
double F=(double)f/100;
System.out.println("F====="+F);
}

结果是
g=====121.61110000000001
G=====1.2161110000000002
f=====121
F=====1.21