Java中double 相除后的保留2两位并解决科学计数法问题

一 一般情况

Java计算两个double数据类型的相除后的保留2两位

package com.baojia.backstage.sptools.utils;

import java.math.BigDecimal;

/**
 * @className Test
 * @Description TODO
 * @Author liujianfu
 * @Date 2019/9/10 14:01
 * @Version 1.0
 **/

public class Test {
    public static void main(String args[]){
    System.out.println("");
   double a=30d;
   double b=70d;
      double d= division(a, b, 2);
      System.out.println("d:"+d);

    }
    public static double division(double v1, double v2, int scale) {
        if (scale < 0) {
            throw new IllegalArgumentException(
                    "The scale must be a positive integer or zero");
        }
        BigDecimal b1 = new BigDecimal(Double.toString(v1));
        BigDecimal b2 = new BigDecimal(Double.toString(v2));
        return b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).doubleValue();
    }
}

结果:
d:0.43

二  实现相除后解决科学计数法问题

   /**
    * @author liujianfu
    * @description       求两个double数据类型相除,并解决科学计数法问题
    * @date 2022/5/21 12:44
    * @param [v1, v2, scale]
    * @return double
    */
    public static String division(double v1, double v2, int scale) {
        if (scale < 0) {
            throw new IllegalArgumentException(
                    "The scale must be a positive integer or zero");
        }
        BigDecimal b1 = new BigDecimal(Double.toString(v1));
        BigDecimal b2 = new BigDecimal(Double.toString(v2));
        double resultValue=b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).doubleValue();
        System.out.println("出现科学计数法:"+resultValue);
        //防止出现科学计数法
        BigDecimal bigDecimal1 = new BigDecimal(resultValue);
        String finishResult= bigDecimal1.setScale(5, BigDecimal.ROUND_HALF_UP).toString();
        System.out.println("解决科学计算法:"+finishResult);
        return finishResult;
    }

三  double类型数据比较大小

    /**
    * @author liujianfu
    * @description       double类型数值比较大小
    * @date 2022/5/21 14:01
    * @param [firstVal, secondVal]
    * @return boolean
    */
public static boolean compareData(String firstVal,String secondVal){
    BigDecimal data1 = new BigDecimal(firstVal);
    BigDecimal data2 = new BigDecimal(secondVal);
    if (data1.compareTo(data2) < 0) {
        System.out.println("第二位数大!");
    }
    if (data1.compareTo(data2) == 0) {
        System.out.println("两位数一样大!");
    }
    if (data1.compareTo(data2) > 0) {
        System.out.println("第一位数大!");
    }
    return true;
}

四 演示调试

    public static void main(String[] args) {
        System.out.println("");
        double a=-57.30849d;
        double b=300000d;
        String  d= division(a, b, 5);
        System.out.println("d:"+d);
       // double changeRate=Double.parseDouble(new DecimalFormat("#0.00000").format(d));//保留5位小数
       // System.out.println("changeRate:"+changeRate);
        String d1="0.00084";
        compareData(d1,d);
    });

结果

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值