BigDecimal加减乘除运算

1人阅读 评论(0) 收藏 举报
分类:

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代码 复制代码 收藏代码
  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. };  
查看评论

BigDecimal加减乘除

BigDecimal bignum1 = new BigDecimal("10");  BigDecimal bignum2 = new BigDecimal("5");  BigDecimal bi...
  • csdn565973850
  • csdn565973850
  • 2017-06-27 19:03:07
  • 2952

mysql BigDecimal 加减乘除

public static void main(String[] args) {       //默认除法运算精度           final   int   DEF_DIV_SCALE   ...
  • world_the_begin
  • world_the_begin
  • 2017-11-24 17:36:23
  • 318

java BigDecimal实现精确加减乘除运算

java.math.BigDecimal.BigDecimal一共有4个够造方法,让我先来看看其中的两种用法: 第一种:BigDecimal(double val) 将double转换为BigDec...
  • shadow_zed
  • shadow_zed
  • 2017-06-20 22:48:19
  • 36908

BigDecimal 加减乘除

在java 里面,int 的最大值是:2147483647,现在如果想用比这个数大怎么办?换句话说,就是数值较大,这时候就用到了BigDecimal  下载整理了一下BigDecimal 的加减乘...
  • limingchuan123456789
  • limingchuan123456789
  • 2013-10-09 21:05:04
  • 88360

转:java中BigDecimal加减乘除基本用法

文章转自:http://www.javacui.com/page/2 Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型...
  • weixin_38643688
  • weixin_38643688
  • 2017-10-24 16:08:15
  • 140

整数型加减乘除四则混合运算

没有使用递归方法,根据一个完整公式计算对应结果,目前水平有限,显得比较繁琐的感觉,很多都是一步一步测试改进出来的,不知道还有么有BUG。 如果有好的改进,多多指教! /**  * 整形正数加减...
  • op4439
  • op4439
  • 2016-05-03 22:31:02
  • 735

javascript BigDecimal 大数运算类 单文件浓缩版

  • 2012年09月17日 14:05
  • 8KB
  • 下载

常见对象_BigDecimal的加减乘除法的使用

package cn.itcast_02; import java.math.BigDecimal; /* * 构造方法: * public BigDecimal(String val):...
  • L1585931143
  • L1585931143
  • 2016-12-07 23:48:47
  • 16206

BigDecimal类的加减乘除(解决double计算精度问题)

BigDecimal简介 Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数。在实际应用中...
  • qq_28270161
  • qq_28270161
  • 2015-07-09 16:31:07
  • 2437
    个人资料
    持之以恒
    等级:
    访问量: 508
    积分: 466
    排名: 10万+
    文章存档
    最新评论
  • JsonConfig

    qq_36850813: [reply]zhugeaming2018[/reply] 嗯嗯,大家一起学习,我会把我工作中遇到...