项目有很小的需求,必须保留两个整数相除后的两位小数,即1.00和0.50的数据格式。
以下做法是不行的。 因为如果将两个整数相乘,小数点以下的数字将被截断,运算结果将变为整数类型。
int x=10;
int y=20;
int a=x/y;
系统. out.println (a;
//输出0
system.out.println(x/y );
//输出0
system.out.println ((浮动) ) x/y );
//输出0.0
在这种情况下,运算结果必须是浮点数,在这种情况下,必须将两整数中一个或全部强制转换为浮点数,
浮动b=(浮动) x/y;
浮动=x/(浮动) y;
浮动=(浮动) x/(浮动) y;
系统. out.println (b );
//输出0.5
系统. out.println (c;
//输出0.5
系统. out.println (d;
//输出0.5
需要格式来控制两位小数的保留。
decimal format df=new decimal format (' 0.00 );
stringe=df.format(b; //这里可以使用以上的b/c/d中的任意一种
系统. out.println (e;
//输出0.50
stringe=df.format(a;
系统. out.println (e;
输出0.00。 a是int类型的值,在格式化之前x/y已经是整数0,所以现在只需将小数0增加两位数
网上有以下几种写法。 他的意思是四舍五入,保留两位小数,但小数必须有值。
doublea=newbigdecimal((float ) 10/20 ).setScale(2) ) 2,BigDecimal.ROUND_HALF_UP ).doubleValue;
系统. out.println (a;
//输出0.5
doubleb=newbigdecimal () float ()1/3).setScale(2) (2,BigDecimal.ROUND_HALF_UP ).doubleValue );
系统. out.println (f;
//输出0.33
float是单精度类型,精度为8位有效数字,内存分配为4字节32位,取值范围为10的-38次幂至10的38次幂,有效位数为6-7位。
双精度类型的相应双精度,精度为17位有效数字,取值范围从10的-308次幂到10的308次幂,双精度占用8字节存储空间。
所有缺省小数都用双精度表示,因此使用浮点时,应该在后面加上f。 例如,如果这样声明,
浮动z=1.3;
会报的错误
type mismatch : cannotconvertfromdoubletofloat
需要更改。
浮动z=1.3f;