一 一般情况
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);
});
结果