首页 > 编程知识 正文

java怎么保留一位小数,保留两位小数的乘法

时间:2023-05-04 20:54:07 阅读:34609 作者:3867

项目有很小的需求,必须保留两个整数相除后的两位小数,即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;

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。