您的位置:首页 > 编程语言 > Java开发

java数字保留有效位数及异常

2017-05-25 11:27 399 查看
调试项目时遇到

java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.

无穷小数位

这样我们在使用BigDecimal做【除法】或【乘法】一定要设置有效位数和舍入模式

一、除法运算

BigDecimal divide(BigDecimal divisor, int scale, RoundingMode roundingMode)


二、BigDecimal 保留有效位数

b.setScale(2,  BigDecimal.ROUND_HALF_UP) 表明四舍五入,保留两位小数


三、float/double保留有效位数

1. 方法一 转换为BigDecimal,然后参考二

2. 方法二

import java.text.DecimalFormat;
String   a   =  new DecimalFormat("###,###,###.##").format(100.12345  );


3. 方法三


float   a  =   123.2334f;
float  b   =  (float)(Math.round(a*100))/100;(这里的100就是2位小数点,如果要其它位,如4位,这里两个100改成10000)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: