1,在java中int和Integer在进行除法运算的时候,总是得到“0”
package com.tk.www;
public class Demo {
public static void main(String[] args) {
Integer a = 123;
Integer b = 456;
int c = 123;
int d = 456;
System.out.println(a/b);
System.out.println(c/d);
}
}
得到的结果:
0
0
2,解决这个问题,对整型数据进行强转
package com.tk.www;
public class Demo {
public static void main(String[] args) {
Integer a = 123;
Integer b = 456;
int c = 123;
int d = 456;
System.out.println(a/b);
System.out.println(c/d);
System.out.println((double)a/b);
System.out.println((double)c/d);
System.out.println((float)a/b);
System.out.println((float)c/d);
}
}
0
0
0.26973684210526316
0.26973684210526316
0.26973686
0.26973686
但是这种方式不能精确的小数位。
如果想拿到小数位可以使用DecimalFormat。
package com.tk.www;
import java.text.DecimalFormat;
public class Demo {
public static void main(String[] args) {
Integer a = 123;
Integer b = 456;
int c = 123;
int d = 456;
System.out.println(a/b);
System.out.println(c/d);
System.out.println((double)a/b);
System.out.println((double)c/d);
System.out.println((float)a/b);
System.out.println((float)c/d);
DecimalFormat df = new DecimalFormat("0.######");
System.out.println(df.format((float)a/b));
System.out.println(df.format((float)c/d));
}
}
0
0
0.26973684210526316
0.26973684210526316
0.26973686
0.26973686
0.269737
0.269737
DecimalFormat 类主要靠 # 和 0 两种占位符号来指定数字长度。0 表示如果位数不足则以 0 填充,# 表示只要有可能就把数字拉上这个位置。更多请参考 DecimalFormat 类的文档。