博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Double数字转换工具类
阅读量:7097 次
发布时间:2019-06-28

本文共 4494 字,大约阅读时间需要 14 分钟。

  hot3.png

package com.dtb.member.util;import java.math.BigDecimal;import java.math.RoundingMode;import java.text.DecimalFormat;/** * @Author:ChengJian * @Description: * @Date: Created in 下午4:48 2019/1/17 */public class NumberUtils {    /**     *     * @Description:7*0.01*100/100 保留四位小数,截取4位     * @Date:2019/1/17 下午4:49     * @Author:ChengJian     * @UpdateRemark:     * @Version:1.0     *     */    public static double getDouble_toNum_no4no5(double number,int num){        // setScale(1)表示保留一位小数,默认用四舍五入方式        // setScale(1,BigDecimal.ROUND_DOWN)直接删除多余的小数位,如2.35会变成2.3        // num 代表保留几位小数        return new BigDecimal(number).setScale(num, BigDecimal.ROUND_DOWN).doubleValue();    }    /**     *     * @Description:setScale(1,BigDecimal.ROUND_UP)进位处理,不管后为是1还是6,都进1     * @Date:2019/1/17 下午4:59     * @Author:ChengJian     * @UpdateRemark:     * @Version:1.0     *     */    public static double getDouble_toNum_isincr(double number,int num){        return new BigDecimal(number).setScale(num, BigDecimal.ROUND_UP).doubleValue();    }    /**     *     * @Description:正常四舍五入     * @Date:2019/1/28 下午5:37     * @Author:ChengJian     * @UpdateRemark:     * @Version:1.0     *     */    public static double getDouble_toNum_is45(double number,int num){        return new BigDecimal(number).setScale(num, BigDecimal.ROUND_HALF_UP).doubleValue();    }    /**     *     * @Description:获取两个整数的double值 isNpoint:保留很多小数点     * @Date:2019/1/24 上午9:54     * @Author:ChengJian     * @UpdateRemark:     * @Version:1.0     *     */    public static double getDouble_division_isNpoint(int num1,int num2){        double result = num1*0.01*100/num2;        return result;    }    /**     *     * @Description:两外一种方法,和上面方式不同,截取两位小数     * @Date:2019/1/24 上午10:03     * @Author:ChengJian     * @UpdateRemark:     * @Version:1.0     *     */    public static double getDouble_to2_no4no5(double num){        DecimalFormat df = new DecimalFormat("#0.##");        df.setRoundingMode(RoundingMode.FLOOR);        return Double.parseDouble(df.format(num));    }    /**     *     * @Description://四舍五入转换成整数     * @Date:2019/1/24 上午10:18     * @Author:ChengJian     * @UpdateRemark:     * @Version:1.0     *     */    public static int getInteger(double num){        DecimalFormat df2 = new DecimalFormat("######0");        return Integer.parseInt(df2.format(num));    }    /**     *     * @Description:提供精确的加法运算     * @Date:2019/1/28 上午10:38     * @Author:ChengJian     * @UpdateRemark:     * @Version:1.0     *     */    public static double add_2_double(double v1, double v2) {        BigDecimal b1 = new BigDecimal(Double.toString(v1));        BigDecimal b2 = new BigDecimal(Double.toString(v2));        return b1.add(b2).doubleValue();    }    /**     *     * @Description:提供精确的减法运算     * @Date:2019/1/28 上午10:39     * @Author:ChengJian     * @UpdateRemark:     * @Version:1.0     *     */    public static double substract_2_double(double v1, double v2) {        BigDecimal b1 = new BigDecimal(Double.toString(v1));        BigDecimal b2 = new BigDecimal(Double.toString(v2));        return b1.subtract(b2).doubleValue();    }    /**     *     * @Description:提供精确的乘法运算     * @Date:2019/1/28 上午10:40     * @Author:ChengJian     * @UpdateRemark:     * @Version:1.0     *     */    public static double multiply(double v1, double v2) {        BigDecimal b1 = new BigDecimal(Double.toString(v1));        BigDecimal b2 = new BigDecimal(Double.toString(v2));        return b1.multiply(b2).doubleValue();    }    /**     *     * @Description:提供(相对)精确的除法运算,当发生除不尽的情况时,精确到小数点以后10位,以后的数字四舍五入.     * @Date:2019/1/28 上午10:40     * @Author:ChengJian     * @UpdateRemark:     * @Version:1.0     *     */    public static double divide(double v1, double v2) {        return divide(v1, v2, 10);    }    /**     *     * @Description:提供(相对)精确的除法运算.当发生除不尽的情况时,由scale参数指 定精度,以后的数字四舍五入     * @Date:2019/1/28 上午10:41     * @Author:ChengJian     * @UpdateRemark:     * @Version:1.0     *     */    public static double divide(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();    }    public static void main(String[] args) {        System.out.println(getDouble_toNum_is45(2.1323,0));    }}

转载于:https://my.oschina.net/mdxlcj/blog/3008037

你可能感兴趣的文章
预编译指令包括:宏定义;条件编译;文件包含(就是include)
查看>>
(待编辑)贪心算法学习——会议安排问题
查看>>
getopts的使用
查看>>
lnmp安装学习
查看>>
CodeChef - QRECT Rectangle Query CDQ分治
查看>>
React Native系列(6) - 编译安卓私有React-Native代码
查看>>
初探12306售票算法(一)- 理论(转)
查看>>
shell中使用sqlplus及调试相关
查看>>
java.lang.Exception: DEBUG -- CLOSE BY CLIENT STACK TRACE 的理解
查看>>
Python学习【第23篇】:利用threading模块开线程
查看>>
C++之编码问题(Unicode,ASCII,本地默认)
查看>>
字母排序
查看>>
[日常] DNS的迭代查询过程
查看>>
[Linux] Nginx 提供静态内容和优化积压队列
查看>>
Excel VBA 基本概念
查看>>
获取文件Md5值
查看>>
Linux常用命令整理
查看>>
逛论坛时发现 有关 递归调用
查看>>
JavaScript的3大组成部分&&ECMAScript函数&&闭包
查看>>
.NET Core 跨平台发布(dotnet publish)
查看>>