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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 各代iphone尺寸_iphone屏幕尺寸比例是多少,iphone各代屏幕尺寸大小介绍

    各代iphone尺寸_iphone屏幕尺寸比例是多少,iphone各代屏幕尺寸大小介绍自2007年苹果发布第一代iPhone以来,到目前最新的iPhoneXS、XSMax,苹果累计发布了21款手机,涉及7款尺寸,8种分辨率。那么这么多的不同手机之间有什么内在联系吗?为什么在iPhone6代-8代之间,屏幕是4.7寸和5.5寸,而iPhoneXS和Max分别是5.8寸和6.5寸,他们之间有什么联系吗?XR为什么分辨率这么低,被吐槽是大果粒屏?仔细看完本文,你将对iPhone的设…

    2022年5月14日
    50
  • NOIP2012 借教室[通俗易懂]

    NOIP2012 借教室[通俗易懂]2借教室题目描述在大学期间,经常需要租借教室。大到院系举办活动,小到学习小组自习讨论,都需要向学校申请借教室。教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样。 面对海量租借教室的信息,我们自然希望编程解决这个问题。 我们需要处理接下来n天的借教室信息,其中第i天学校有ri个教室可供租借。共有m份订单,每份订单用三个正整数描述,分别为dj,sj,tj,表示某租借

    2022年8月22日
    8
  • winform自定义控件开发_visual studio插件

    winform自定义控件开发_visual studio插件TcxLabel:文本标签TcxProgressBar:进度条,用法:DevExpress之进度条_cxu123321的博客-CSDN博客TcxTrackBar:滑动条TdxZoomTrackBar:缩放滑动条TcxCheckListBox:复选框列表,用法:求cxCheckListBox的用法-CSDN论坛TcxColorComboBox:颜色组合框TcxFontNameComboBox:字体组合框TcxCheckComboBox:下拉复选框,用法:TcxCheckComboB

    2025年11月20日
    8
  • 备忘录模式实例_iphone语音备忘录无法分享

    备忘录模式实例_iphone语音备忘录无法分享备忘录模式 Motivation动机模式定义实例结构要点总结笔记动机在软件构建过程中,某些对象的状态在转换过程中,可能由于某种需要,要求程序能够回溯对象之前处于某个点时的状态.如果使用一些共有接口来让其他对象得到对象的状态,便会暴露对象的实现细节.如何实现对象状态的良好保存与回复?但同时又不会因此而破坏对象的封装性模式定义在不破坏封装性的前提下.捕获一个对象的内部状态,并在该对象之外保存这个状态.这样以后就可以将该对象恢复到原先保存的状态实例朴素class Memento{ stri

    2022年8月11日
    4
  • 为什么使用全局平均池化层?[通俗易懂]

    为什么使用全局平均池化层?1、全连接层:、全连接网络可以使featuremap的维度减少,进而输入到softmax、全连接层的参数超多、会造成过拟合、模型本身变得非常臃肿2、全局平均池化层(globalaveragepoolilng)[GAP]:、直接实现了降维、极大地减少了网络的参数、对整个网路在结构上做正则化防止过拟合,直接赋予了每个channel实际的内别意义、gap可能会造成收敛速度减慢3、为什么会收敛速度变慢?以及对模型训练有什么差异?、全连接层结构的模型对于训练学习

    2022年4月11日
    129
  • 树莓派介绍以及FAQ【这是我见过最全的树莓派教程】

    树莓派介绍以及FAQ【这是我见过最全的树莓派教程】一、树莓派简介树莓派是什么?树莓派(RaspberryPi)是尺寸仅有信用卡大小的一个小型电脑,您可以将树莓派连接电视、显示器、键盘鼠标等设备使用。树莓派能替代日常桌面计算机的多种用途,包括文字处理、电子表格、媒体中心甚至是游戏。并且树莓派还可以播放高至4K的高清视频。我们希望将树莓派推广给全世界的青少年电脑爱好者,用于培养计算机程序设计的兴趣和能力。树莓派各版本发布时间和差异对照?二、购买与配送在哪里购买?(说人话京东和淘宝都可以直接购买)树莓派基金会与E络盟与…

    2022年10月14日
    3

发表回复

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

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