0
点赞
收藏
分享

微信扫一扫

JAVA中double精度问题案例

小沙坨 2022-03-30 阅读 55
java

JAVA基础


身高预测问题:

其实我们可以通过父母的身高大致推断出子女的身高,假定父母与子女的身高遗传关系如下:
​ 儿子身高(厘米)=(父亲身高+母亲身高) ×1.08÷2
​ 女儿身高(厘米)=(父亲身高×0.923+母亲身高) ÷2
那已知:现有父亲身高175CM,母亲身高160CM。
请将预测的子女身高打印输出


package test;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

/**
 * @program: test
 * @description: 程序入口类
 * @author: yu zhi(towisdom)
 * @create: 2022-03-28 13:02
 */
public class App {

    public static void main(String[] args) {

        double m = 160;
        double f = 180;
        BigDecimal big1 = new BigDecimal(160);
        BigDecimal big2 = new BigDecimal(180);
        Shengao(m,f);
        Shengao2(big1,big2);
    }
    /*  其实我们可以通过父母的身高大致推断出子女的身高,假定父母与子女的身高遗传关系如下:
        儿子身高(厘米)=(父亲身高+母亲身高) ×1.08÷2
        女儿身高(厘米)=(父亲身高×0.923+母亲身高) ÷2
            那已知:现有父亲身高175CM,母亲身高160CM。*/
    public static void Shengao(double m, double f) {
        //3.计算儿子身高
        double sonHeight = (m + f) * 1.08 / 2;
        //4.计算女儿身高
        double daughterHeight = (m * 0.923 + f) / 2;
        //5.打印输出最终计算的结果
        List<Object> list = new ArrayList();
        List<String> listq = new ArrayList();

        System.out.println("儿子预计身高" + sonHeight + "厘米");
        System.out.println("女儿预计身高" + daughterHeight + "厘米");


    }
    public static void Shengao2(BigDecimal m, BigDecimal f) {
        //3.计算儿子身高
        BigDecimal multiply = new BigDecimal(1.08);
        BigDecimal divide = new BigDecimal(2);
        BigDecimal sonHeight = ((m .add(f)) .multiply(multiply)).divide(divide).setScale(2,BigDecimal.ROUND_DOWN) ;
        //4.打印输出最终计算的结果
        List<Object> list = new ArrayList();
        List<String> listq = new ArrayList();

        System.out.println("儿子预计身高" + sonHeight + "厘米");


    }

}

学习时间:

`每日半小时


总结:

  • java代码double小数点精度问题,BigDecimal的加减乘除及它的方法使用,如下图

在这里插入图片描述

举报

相关推荐

0 条评论