java数据类型四舍五入保留小数位

苦逼的1024 / 2025-02-18 / 原文

在java处理int、float、double、long等整形或者小数时,如果需要转为Bigdecimal时,一定要先转为字符串,然后再转为Bigdecimal。否则可能出现精度丢失的问题。

在对float,double四舍五入时,不要直接只用以下方法,如果用了,可以试下2000.225保留两位小数。不管用java还是python计算出来都会是2000.22,而不是2000.23

double value = 2000.225;
DecimalFormat formatScale2 = new DecimalFormat(""#0.00);
String result = formatScale2.format(value);

 

推荐使用以下方法

double value = 2000.225;
BigDeciaml num = new BigDecimal(String.valueof(value));
BigDecimal decimal = num.setScale(2,BigDecimal.Round_HALF_UP);