BigDecimal加减乘除运算

BigDecimal加减乘除运算java.math.BigDecimal。BigDecimal一共有4个够造方法,让我先来看看其中的两种用法:第一种:BigDecimal(doubleval)TranslatesadoubleintoaBigDecimal.第二种:BigDecimal(Stringval)TranslatestheStringrepresentationofaBig

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

java.math.BigDecimal。BigDecimal一共有4个够造方法,让我先来看看其中的两种用法:

第一种:BigDecimal(double val)
Translates a double into a BigDecimal.

第二种:BigDecimal(String val)
Translates the String repre sentation of a BigDecimal into a BigDecimal.

使用BigDecimal要用String来够造,要做一个加法运算,需要先将两个浮点数转为String,然后够造成BigDecimal,在其中一个上调用add方法,传入另一个作为参数,然后把运算的结果(BigDecimal)再转换为浮点数。

public static double add(double v1,double v2)
public static double sub(double v1,double v2)
public static double mul(double v1,double v2)
public static double div(double v1,double v2)
public static double div(double v1,double v2,int scale)
public static double round(double v,int scale)

 

Java代码
复制代码 
收藏代码BigDecimal加减乘除运算

  1. import java.math.BigDecimal;   
  2. /**  
  3. * 由于Java的简单类型不能够精确的对浮点数进行运算,这个工具类提供精  
  4. * 确的浮点数运算,包括加减乘除和四舍五入。  
  5. */  
  6. public class Arith{ //默认除法运算精度   
  7. private static final int DEF_DIV_SCALE = 10//这个类不能实例化   
  8. private Arith(){   
  9. }   
  10. /**  
  11. * 提供精确的加法运算。  
  12. * @param v1 被加数  
  13. * @param v2 加数  
  14. * @return 两个参数的和  
  15. */  
  16. public static double add(double v1,double v2){   
  17. BigDecimal b1 = new BigDecimal(Double.toString(v1));   
  18. BigDecimal b2 = new BigDecimal(Double.toString(v2));   
  19. return b1.add(b2).doubleValue();   
  20. }   
  21. /**  
  22. * 提供精确的减法运算。  
  23. * @param v1 被减数  
  24. * @param v2 减数  
  25. * @return 两个参数的差  
  26. */  
  27. public static double sub(double v1,double v2){   
  28. BigDecimal b1 = new BigDecimal(Double.toString(v1));   
  29. BigDecimal b2 = new BigDecimal(Double.toString(v2));   
  30. return b1.subtract(b2).doubleValue();   
  31. }   
  32. /**  
  33. * 提供精确的乘法运算。  
  34. * @param v1 被乘数  
  35. * @param v2 乘数  
  36. * @return 两个参数的积  
  37. */  
  38. public static double mul(double v1,double v2){   
  39. BigDecimal b1 = new BigDecimal(Double.toString(v1));   
  40. BigDecimal b2 = new BigDecimal(Double.toString(v2));   
  41. return b1.multiply(b2).doubleValue();   
  42. }   
  43. /**  
  44. * 提供(相对)精确的除法运算,当发生除不尽的情况时,精确到  
  45. * 小数点以后10位,以后的数字四舍五入。  
  46. * @param v1 被除数  
  47. * @param v2 除数  
  48. * @return 两个参数的商  
  49. */  
  50. public static double div(double v1,double v2){   
  51. return div(v1,v2,DEF_DIV_SCALE);   
  52. }   
  53. /**  
  54. * 提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指  
  55. * 定精度,以后的数字四舍五入。  
  56. * @param v1 被除数  
  57. * @param v2 除数  
  58. * @param scale 表示表示需要精确到小数点以后几位。  
  59. * @return 两个参数的商  
  60. */  
  61. public static double div(double v1,double v2,int scale){   
  62. if(scale<0){   
  63. throw new IllegalArgumentException(   
  64. “The scale must be a positive integer or zero”);   
  65. }   
  66. BigDecimal b1 = new BigDecimal(Double.toString(v1));   
  67. BigDecimal b2 = new BigDecimal(Double.toString(v2));   
  68. return b1.divide(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue();   
  69. }   
  70. /**  
  71. * 提供精确的小数位四舍五入处理。  
  72. * @param v 需要四舍五入的数字  
  73. * @param scale 小数点后保留几位  
  74. * @return 四舍五入后的结果  
  75. */  
  76. public static double round(double v,int scale){   
  77. if(scale<0){   
  78. throw new IllegalArgumentException(“The scale must be a positive integer or zero”);   
  79. }   
  80. BigDecimal b = new BigDecimal(Double.toString(v));   
  81. BigDecimal one = new BigDecimal(“1”);   
  82. return b.divide(one,scale,BigDecimal.ROUND_HALF_UP).doubleValue();   
  83. }   
  84. };  
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

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


相关推荐

  • 查看linux执行的命令记录_shell 调用history

    查看linux执行的命令记录_shell 调用history前言我们每次敲打linux命令的时候,有时候想用之前用过的命令,一般情况下,我们都会按↑↓箭头来寻找历史的命令记录,那如果我想用1天前执行的某条命令,难道还要按↑100次?显示这样是不现实的,我们可

    2022年7月31日
    8
  • win10安装nfs服务器并实现liunx访问「建议收藏」

    1、测试环境    宿主操作系统:win1064位    虚拟机操作系统:ubuntuserver18.042、安装nfs服务器   a.下载安装haneWIN;   b.右键以管理员身份运行nfsserver(若不以管理员身份打开,设置项均为灰色不可设),切换到“Exports”标签页,点击“Editexportsfile"进行编辑,如下图所示。比如"E:\Video"为win1…

    2022年4月13日
    736
  • 函数之递归[通俗易懂]

    递归前戏在讲今天的内容之前,我们先来讲一个故事,讲的什么呢?从前有座山,山里有座庙,庙里有个老和尚讲故事,讲的什么呢?从前有座山,山里有座庙,庙里有个老和尚讲故事,讲的什么呢?从前有座山,山里有座

    2022年3月29日
    56
  • h5页面 请在微信客户端打开链接_完美解决 请在微信客户端打开链接

    h5页面 请在微信客户端打开链接_完美解决 请在微信客户端打开链接原标题:完美解决请在微信客户端打开链接背景描述相信有模拟微信页面请求的测试都有看到过这个页面,简单点说就是爬虫爬微信页面,进行回放的时候会出现这个页面。大概在1年前,专门安排了一个人去解决这个技术问题,遗憾的是当时没有找到解决方案,接下来所有微信端的接口测试和性能测试都无法进行,今天和大家分享下我们的解决方案,希望大家可以绕过微信的坑。业务场景我这里以JMeter来举例,我们可以通过在JMet…

    2022年6月8日
    33
  • Eclipse程序员要掌握的常用快捷键建议收藏

    判断一个人的编程水平,就看他用键盘多,还是鼠标多。用键盘一是为了输入代码(当然了,也包括注释),再有就是熟练使用快捷键。所以在网上找了一下,自己也总结了些用得比较多的,和大家一起分享一下。Ctrl+K

    2021年12月20日
    58
  • opencv videocapture参数_opencv显示图像

    opencv videocapture参数_opencv显示图像importcv2ascvcapture=cv.VideoCapture(0)whileTrue: ret,frame=capture.read() cv.imshow(“Video”,frame) c=cv.waitKey(1) ifc==27: break capture.release() cv.destroyAllWindows()VideoCapture()中参数是0,表示打开笔记本的内置摄像头cap.read()按帧读取视频,re

    2025年7月16日
    0

发表回复

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

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