java中解决double类型精度丢失问题(BigDecimal)-创新互联

BigDecimal类

对于不需要准确计算精度的数字可以直接使用float或double,但如果要精确计算结果,就必须使用BigDecimal类

为新晃等地区用户提供了全套网页设计制作服务,及新晃网站建设行业解决方案。主营业务为成都做网站、网站建设、新晃网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!

public BigDecimal(double val)  将double表现形式转换为BigDecimal

public BigDecimal(int val)         将int表现形式转换成BigDecimal

public BigDecimal(String val)    将String表现形式转换成BigDecima

例:计算一个长方形的边长,每段解释在代码段

import java.math.BigDecimal;
import java.util.Scanner;


public class Demo5 {
    public static void main(String[] args) {
        //调用perimeter类
        double z = perimeter();
        //输出z的值,发现精度丢失问题解决
        System.out.println(z);
    }

    public static double perimeter() {
        //Scanner 用户输入
        Scanner sc = new Scanner(System.in);
        //输入一个double类型数值给x,y
        double x = sc.nextDouble();
        double y = sc.nextDouble();
        //把输入的x,y值(长、宽)转成字符串类型给到b1,b2
        BigDecimal b1= new BigDecimal(String.valueOf(x));
        BigDecimal b2= new BigDecimal(String.valueOf(y));
        BigDecimal b3= new BigDecimal("2.0");
        //返回b1+b2再乘b3的值
        return b1.add(b2).multiply(b3).doubleValue();
    }
}

随机输入两个数 如 10.1  10.2

计算结果 z = 40.6 

String.valueOf() ->基本数据类型转换为字符串形式表现

b1.add(b2).doubleValue();
//加法
b1.subtract(b2).doubleValue();
//减法
b1.multiply(b2).doubleValue();
//乘法
b1.divide(b2).doubleValue();
//除法

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


网站名称:java中解决double类型精度丢失问题(BigDecimal)-创新互联
文章出自:http://hbruida.cn/article/cogedi.html