文档章节

java double类型数据操作工具类

xuewenyu
 xuewenyu
发布于 2016/03/28 15:15
字数 361
阅读 298
收藏 7
package com.hojo.avengers.lib.utils;

import java.math.BigDecimal;

/**
 * 
 * @ClassName: DoubleOperationUtils
 * @Description: 封装double类型数据+-*%等运算操作
 * @author xuewenyu
 * @date 2016年3月14日 下午3:20:27
 *
 */
public class DoubleOperationUtils {

    /**
     * 修改精度
     * 
     * @param value
     * @param num
     * @return
     */
    public static double changeDecimal(double value, int num) {
        BigDecimal b = new BigDecimal(value);
        double v = b.setScale(num, 4).doubleValue();
        return v;
    }

    /**
     * 两个double相加方法
     * 
     * @param a
     * @param b
     * @return
     */
    public static Double doubleAdd(Double a, Double b) {
        BigDecimal b1 = new BigDecimal(Double.toString(a));
        BigDecimal b2 = new BigDecimal(Double.toString(b));
        return b1.add(b2).doubleValue();
    }

    /**
     * 两个double相加方法,并保留指定精度
     * 
     * @param a
     * @param b
     * @param num
     * @return
     */
    public static Double doubleAdd(Double a, Double b, int num) {
        return changeDecimal(doubleAdd(a, b), num);
    }

    /**
     * 两个double相减方法
     * 
     * @param a
     * @param b
     * @return
     */
    public static Double doubleSub(Double a, Double b) {
        BigDecimal b1 = new BigDecimal(Double.toString(a));
        BigDecimal b2 = new BigDecimal(Double.toString(b));
        return b1.subtract(b2).doubleValue();
    }

    /**
     * 两个double相减方法,并保留指定精度
     * 
     * @param a
     * @param b
     * @param num
     * @return
     */
    public static Double doubleSub(Double a, Double b, int num) {
        return changeDecimal(doubleSub(a, b), num);
    }

    /**
     * 两个double相乘方法
     * 
     * @param a
     * @param b
     * @return
     */
    public static Double doubleMul(Double a, Double b) {
        BigDecimal b1 = new BigDecimal(Double.toString(a));
        BigDecimal b2 = new BigDecimal(Double.toString(b));
        return b1.multiply(b2).doubleValue();
    }

    /**
     * 两个double相乘方法,并保留指定精度
     * 
     * @param a
     * @param b
     * @param num
     * @return
     */
    public static Double doubleMul(Double a, Double b, int num) {
        return changeDecimal(doubleMul(a, b), num);
    }

    /**
     * 两个double相除方法,并保留指定精度
     * 
     * @param a
     * @param b
     * @param scale
     * @return
     */
    public static Double doubleDiv(Double a, Double b, int scale) {
        BigDecimal b1 = new BigDecimal(Double.toString(a));
        BigDecimal b2 = new BigDecimal(Double.toString(b));
        return Double.valueOf(b1.divide(b2, scale, 4).doubleValue());
    }
}


© 著作权归作者所有

xuewenyu
粉丝 0
博文 29
码字总数 10347
作品 0
高级程序员
私信 提问
Java开发每日复盘2018_0514

今天主要跟大家分享3个部分: 一、「Java的核心机制」 二、「Java命名规范」 三、「Java数据类型相关」 下面我们来一个一个的说: 「Java核心机制」 Java是一种强制面向对象的解释型语言(O...

ZeroOSTalk
2018/05/14
0
0
JDK 中常用的包

JDK 中常用的包 Java 私塾跟我学系列——JAVA 篇 配合Java 私塾课堂实录学习视频,可以事半功倍。 视频地址:www.javass.cn/javapeixunzlxz/zlxz.html java.lang----包含一些 Java 语言的核心...

luodis
2010/12/23
711
0
java基础--JDK安装、环境变量配置、工具开发第一个程序、数据类型、运算符

-----Java基础大纲----- **-----本章节-----** 1.Java语言的历史、特点及工作原理 2.JRE和JDK的介绍 3.Java运行环境和开发工具 4.Java基础语法 **-----下一章节-----** 5.条件语句 6.循环 7....

我是宁采臣
2018/06/26
0
0
《俗人笔记》之《Java基础语法上》

基础前言: 二进制: 十进制转二进制:使用除以2获取余数来算 二进制转十进制:按8421编码 字节: 最小的存储单位是字节,最小的信息单位是位(bit) 1B=8bit 1KB=1024B 依次类推 DOS命令 盘符...

钱无极
2018/12/10
0
0
Java小白进阶笔记(2)-变量和数据类型

1.Java有多少种数据类型,数据类型的分类? 两种数据类型: 基本数据类型 引用数据类型 除了八种基本数据类型,其他的都是引用数据类型。 2.Java的工作机制? Java程序的源代码(.java)编译...

阿里云云栖社区
2018/05/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

python数据结构

1、字符串及其方法(案例来自Python-100-Days) def main(): str1 = 'hello, world!' # 通过len函数计算字符串的长度 print(len(str1)) # 13 # 获得字符串首字母大写的...

huijue
9分钟前
0
0
OSChina 周日乱弹 —— 我,小小编辑,食人族酋长

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @宇辰OSC :分享娃娃的单曲《飘洋过海来看你》: #今日歌曲推荐# 《飘洋过海来看你》- 娃娃 手机党少年们想听歌,请使劲儿戳(这里) @宇辰OSC...

小小编辑
今天
737
10
MongoDB系列-- SpringBoot 中对 MongoDB 的 基本操作

SpringBoot 中对 MongoDB 的 基本操作 Database 库的创建 首先 在MongoDB 操作客户端 Robo 3T 中 创建数据库: 增加用户User: 创建 Collections 集合(类似mysql 中的 表): 后面我们大部分都...

TcWong
今天
40
0
spring cloud

一、从面试题入手 1.1、什么事微服务 1.2、微服务之间如何独立通讯的 1.3、springCloud和Dubbo有哪些区别 1.通信机制:DUbbo基于RPC远程过程调用;微服务cloud基于http restFUL API 1.4、spr...

榴莲黑芝麻糊
今天
26
0
Executor线程池原理与源码解读

线程池为线程生命周期的开销和资源不足问题提供了解决方 案。通过对多个任务重用线程,线程创建的开销被分摊到了多个任务上。 线程实现方式 Thread、Runnable、Callable //实现Runnable接口的...

小强的进阶之路
昨天
79
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部