首页 > 编程知识 正文

bigdecimal获取小数,求和四舍五入保留两位小数

时间:2023-05-03 09:43:35 阅读:51113 作者:900

除以问题:个长整型数,转换为BigDecimal类型,保留两位小数。

思路:

将长整型转换为双精度型,然后进行除法运算

2 .除法后转换为BigDecimal类型

3 .最后设定小数点后的位数,设定2位小数点后的位数的处理方法。

代码:

long num1=5L; long num2=20L; bigdecimal num=bigdecimal.value of (双) num1/num2).setScale(2) 2,bigdecimal.round _ half _ u u u up;拓展:

为什么需要将长整型转换为双精度型并除以?

答:直接除以两个长整型数,最后得到的结果为0.00,失去精度,得不到小数点以下的正确数。 两种长整型的除法将自动四舍五入,必须将其转换为双精度类型进行除法运算。

如何将双精度类型的数据转换为BigDecimal类型?

答案:

使用BigDecimal的valueof(doubleval )方法创建对象。

bigdecimal.valueof(doubleval; 源代码:

publicstaticbigdecimalvalueof (双精度)//reminder : Azerodoublereturns ' 0.0 ', sowecannotfastpath//tousetheconstantzero.thismightbeimportantenoughto//justifyafactoryapproach,a cache,or a few privatew }使用bigdecimal (字符串值)构建方法创建对象long num1=5L; long num2=20L; bigdecimal bigdecimal=new bigdecimal (double.tostring () double ) num1/num2).setScale(2) 2,bigdecimal.round注意:

不能直接使用参数为浮动或双精度的BigDecimal创建对象。 那是因为可能会失去精度,数值不正确,无法得到预期的结果。 必须先转换为String,然后创建对象。 可以看到,名为valueof(doubleval )的方法的实现也转换为字符串,然后创建BigDecimal对象。

例如,四舍五入为0.74而不是0.75。

system.out.println (new bigdecimal (0.745 ).setScale(2) 2,BigDecimal.ROUND_HALF_UP ) ); 3.bigdecimalsetscale (intnewscale,int roundingMode ) )。

newScale :保留的小数位数

循环模式:整形方式。

参考:

1.BigDecimal使用ROUND_HALF_UP进行四舍五入

2.BigDecimal中的整形模式

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