int f=(int)(A*100+0.5);
double F=(double)f/100;
为什么这样输出的F就是能去到小数点2位的呢?int f
中就已经把小数的部分给去掉了啊。
再转回来也不会提高精度的。
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
应该是你的 f 已经强制转换成一个整数了,所以你在后面用 f/100 算出来的数最多也就俩位小数点啊
不知道是不是这么个意思