BigDecimal加减乘除运算工具类

BigDecimal加减乘除运算工具类BigDecimal加减乘除运算工具类

大家好,又见面了,我是你们的朋友全栈君。

import java.math.BigDecimal;   

/** * 由于Java的简单类型不能够精确的对浮点数进行运算,这个工具类提供精 * 确的浮点数运算,包括加减乘除和四舍五入。 */  
public class Arith{ 
    
	//默认除法运算精度 
	private static final int DEF_DIV_SCALE = 10; 
	
	/** * 提供精确的加法运算。 * @param v1 被加数 * @param v2 加数 * @return 两个参数的和 */  
	public static double add(double v1,double v2){ 
      
		BigDecimal b1 = new BigDecimal(Double.toString(v1));   
		BigDecimal b2 = new BigDecimal(Double.toString(v2));   
		return b1.add(b2).doubleValue();   
	}   
	
	/** * 提供精确的减法运算。 * @param v1 被减数 * @param v2 减数 * @return 两个参数的差 */  
	public static double sub(double v1,double v2){ 
      
		BigDecimal b1 = new BigDecimal(Double.toString(v1));   
		BigDecimal b2 = new BigDecimal(Double.toString(v2));   
		return b1.subtract(b2).doubleValue();   
	}   
	
	/** * 提供精确的乘法运算。 * @param v1 被乘数 * @param v2 乘数 * @return 两个参数的积 */  
	public static double mul(double v1,double v2){ 
      
		BigDecimal b1 = new BigDecimal(Double.toString(v1));   
		BigDecimal b2 = new BigDecimal(Double.toString(v2));   
		return b1.multiply(b2).doubleValue();   
	}   
	
	/** * 提供(相对)精确的除法运算,当发生除不尽的情况时,精确到 * 小数点以后10位,以后的数字四舍五入。 * @param v1 被除数 * @param v2 除数 * @return 两个参数的商 */  
	public static double div(double v1,double v2){ 
      
		return div(v1,v2,DEF_DIV_SCALE);   
	}   
	
	/** * 提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指 * 定精度,以后的数字四舍五入。 * @param v1 被除数 * @param v2 除数 * @param scale 表示表示需要精确到小数点以后几位。 * @return 两个参数的商 */  
	public static double div(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();   
	}   
	
	/** * 提供精确的小数位四舍五入处理。 * @param v 需要四舍五入的数字 * @param scale 小数点后保留几位 * @return 四舍五入后的结果 */  
	public static double round(double v,int scale){ 
      
		if(scale<0){ 
      
			throw new IllegalArgumentException("The scale must be a positive integer or zero");   
		}   
		BigDecimal b = new BigDecimal(Double.toString(v));   
		BigDecimal one = new BigDecimal("1");   
		return b.divide(one,scale,BigDecimal.ROUND_HALF_UP).doubleValue();   
	}   
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/137300.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • pycharm如何导入自定义模块_Python添加模块

    pycharm如何导入自定义模块_Python添加模块问题:明明python已经安装模块,但是在pycharm打开的项目中,导入改模块,却提示找不到改模块解决办法:需要在project中导入该模块,具体操作如下:1、点击File,选择Settings选项2、选择projectinterpreter选项,上面显示的是已安装的模块,要安装我们所需要的模块,点击右侧”+”3、搜索需要安装的模块,点击左下角的InstallPackage,等待安装,完成之后界面会提示:Package‘openpyxl’installedsuccessfully,表示

    2022年8月29日
    5
  • 一些非常有价值的资料网站有哪些_比较有价值的网站

    一些非常有价值的资料网站有哪些_比较有价值的网站最近在搜集资料的时候,发现了很多好的资料网站,不忍独享,陆续整理出来,贴这里。我先有一个贴一个,等到攒到足够多的时候,我再重新进行整理:电影类:IMDb:http://www.imdb.com/(美国著名互联网电影资料库(InternetMovieDatabase,简称IMDb)是一个关于电影演员、电影、电视节目、电视明星、电子游戏和电影制作的在线数据库。亚马逊公司旗下网站)烂番茄…

    2025年9月1日
    9
  • 2022数学建模美赛A题详细思路获取

    2022数学建模美赛A题详细思路获取已更新!2022美赛A思路

    2022年6月7日
    118
  • earlysuspend[通俗易懂]

    earlysuspend[通俗易懂]earlysuspend================ 头文件:linux/earlysuspend.h使用earlysuspend—————— 另外andorid还支持内核中的earlysuspend操作,因为kenerl此前的电源管理就是把几乎所有的设备 都拖入睡眠模式,但多数情况下有些设备还不需要睡眠。ealysuspen

    2022年9月18日
    2
  • currentStyle getComputedStyle「建议收藏」

    注意:getComputedStyle是firefox中的,     currentStyle是ie中的. 比如说&lt;style&gt;    #mydiv{           width:300px;    }&lt;/styke&gt; 则:varmydiv=document.getElementById(‘mydiv’);…

    2022年4月7日
    45
  • idea免费激活码-激活码分享

    (idea免费激活码)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~9071407CR5-eyJsaWNlbnNlSWQiOi…

    2022年3月22日
    58

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号