java解决小数浮点问题

 import java.math.BigDecimal;


/**
 * @desc:
 * @Author: Yongkang Hou
 * @Date: 2018/8/2
 */
public class BigDecimalOf {

    public static void main(String[] args) {
        Double d1=5.21;
        Double d2=13.14;
        String d3="5.20";
        //转换为BigDecimal类型,非String类型需要先转换为String类型,否则转换后会出现浮点情况
        //错误转换
        BigDecimal error=new BigDecimal(d1);
        System.out.println(error);
        //正确转换
        BigDecimal n1=new BigDecimal(d1.toString());
        BigDecimal n2=new BigDecimal(d2.toString());
        BigDecimal n3=new BigDecimal(d3);
        System.out.println(n1);
        System.out.println(n2);
        System.out.println(n3);
        加法运算 n1加n2
        BigDecimal add=n1.add(n2);
        //n2减n1
        BigDecimal subtract=n2.subtract(n1);
        //n1乘n2乘n3 并且保留两位小数
        BigDecimal multiply=n1.multiply(n2).multiply(n3).setScale(2,BigDecimal.ROUND_HALF_UP);
        //n2除以n1 并且保留两位小数,除法最好设置小数保留位数,否则遇见除不尽的会报错
        BigDecimal divide=n2.divide(n1,2,BigDecimal.ROUND_HALF_UP);
        System.out.println(add);
        System.out.println(subtract);
        //转换为double类型
        System.out.println(divide.doubleValue());
        //转换为String类型
        System.out.println(multiply.toString());
    }

}

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值