System.out.println(new BigDecimal(0.18).toString());
打印出的结果是“0.179999999999999993338661852249060757458209991455078125”
有什么办法把BigDecimal转成String ?
网上有BigDeciaml保留2位小数四舍五入的办法,但不符合本人的业务需求。
解决方案:10分
String str = Float.toString(new BigDecimal(0.18).floatValue() )
1.将此 BigDecimal 转换为 float。
2.返回 float 参数的字符串表示形式,Float类的一个静态方法static String toString(float f)
解决方案:10分
你用String初始化Decimal,这样是精确的小数。
System.out.println(new BigDecimal(“0.18”);
解决方案:5分
System.out.println(bd.doubleValue());
解决方案:10分
根本原因是new BigDecimal(0.18) 这个0.18是double型,不能精确表示0.18这个小数,用new BigDecimal(“0.18”)即可
解决方案:5分
漏了点,这个bd就是BigDecimal.
BigDecimal bd = new BigDecimal(0.18); // System.out.println(bd.toString()); System.out.println(bd.doubleValue()+"");