`

数学运算公用类ArithUtils

 
阅读更多

import java.math.BigDecimal;
import java.util.Random;

public class ArithUtils {
/**
* 默认除法运算精度
*/
    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();
      }
     
      /**
       * 非整除则进位 
       * @param i1
       * @param i2
       * @return
       */
      public int round(int i1,int i2){
      int modi = 0;
      modi = i1 % i2;
      int i = i1/i2;
      if(modi==0){
      return i;
      }else{
      return i+1;
      }
      }
     
      /**
       * 使用时一定要注意其大小,不可超出范围
       * @param i1
       * @param i2
       * @return
       */
      public int pow(int i1,int i2){
      double d1 = (double)i1;
      double d2 = (double)i2;
      return (int)java.lang.Math.pow(d1, d2);
      }
     
      /**
       * 对给定数目的自0开始步长为1的数字序列进行乱序
       * @param maxnum
       * @return
       */
      public static int[] getSequence(int maxnum) {
          int[] sequence = new int[maxnum];
          for(int i = 0; i < maxnum; i++){
              sequence[i] = i;
          }
          Random random = new Random();
          for(int i = 0; i < maxnum; i++){
              int p = random.nextInt(maxnum);
              int tmp = sequence[i];
              sequence[i] = sequence[p];
              sequence[p] = tmp;
          }
          random = null;
          return sequence;
      }
     
      public static void main(String[] agrs){
      ArithUtils arith = new ArithUtils();
      int[] i = arith.getSequence(300);
      for(int n=0;n<i.length;n++){
      System.out.println(i[n]);
      }
      }
}
分享到:
评论

相关推荐

    Java公用分页类 Java公用分页类

    Java公用分页类Java公用分页类Java公用分页类Java公用分页类Java公用分页类Java公用分页类Java公用分页类Java公用分页类Java公用分页类Java公用分页类Java公用分页类Java公用分页类

    windchill开发公用类

    在这个“windchill开发公用类”中,我们很显然关注的是与Windchill系统相关的编程和开发工作。在进行Windchill开发时,公用类通常是一些预定义的代码模块,可以被多次复用,以提高效率和代码的可维护性。 在...

    C# .Net公用类(超多附文档)

    《C# .Net公用类详解及应用》 在.NET框架中,C#语言以其强大的功能和易用性,成为开发Windows应用程序的首选工具。而C#中的公用类库则是开发者们构建高效、可复用代码的重要基石。本资料集包含了"C# .Net公用类(超...

    java公用类

    java公用类,sql基础类等,为使用者提供便利,更好的开发程序

    DotNet公用类(超多附文档)-伍华聪

    伍华聪贡献的“DotNet公用类(超多附文档)”是.NET开发者社区的一个重要资源。它体现了.NET开发者在代码复用和效率提升方面的探索和努力。通过这个资源包,开发者可以访问一系列实用的.NET类,这些类覆盖了.NET平台...

    C#数据库操作公用类

    ### C#数据库操作公用类详解 #### 概述 在.NET框架中,处理数据库操作时,经常需要编写重复性高的代码来实现基本的数据访问功能,如读取、写入、更新等。为了提高代码的复用性和降低维护成本,通常会创建一个通用的...

    Spring+Hibernate实现)Hibernate公用类

    在标题和描述中提到的"Spring+Hibernate实现)Hibernate公用类",实际上是指创建一个泛化的DAO接口(EntityDao)和它的实现类(EntityDaoImpl)。这样的设计模式可以避免为每个数据模型(如User、News、Company)都...

    DundasWebChart 控件 公用类

    这个公用类的出现,是为了简化开发者在实现图表统计功能时的工作,提供了一种高效、便捷的方式来创建和定制各种复杂的图表。 在.NET框架中,Dundas WebChart控件提供了丰富的图表类型,包括但不限于柱状图、折线图...

    时间日期处理公用类

    针对时间日期各种格式之间转换等操作的公用类。

    asp.net帮助工具类公用类

    在ASP.NET项目中,为了提高代码复用率和开发效率,开发者常常会创建一些帮助工具类(Helper Classes)或公用类(Utility Classes)。这些类通常包含一系列静态方法,可以处理各种通用任务,如数据验证、文件操作、...

    C# 公用帮助类

    4. **数学和计算**:可能包括一些数值计算的辅助方法,例如圆周率计算、平方根、指数和对数运算,或者是一些统计计算,如平均值、中位数、众数等。 5. **文件和目录操作**:这类帮助类提供读写文件、创建删除目录、...

    thinkphp3.2.2前后台公用类架构问题分析

    本文实例分析了thinkphp3.2.2前后台公用类架构问题。分享给大家供大家参考。具体分析如下: 3.13之前好多项目都使用前后台公用类,在lib/action下创建Baseaction做为公共继承类,发现3.2.2里面很多人都用A调用,这样...

    [转] 在发布一个鼠标右键的公用类

    【标题】:“[转] 在发布一个鼠标右键的公用类” 这篇博客文章分享的是关于创建和使用一个通用的鼠标右键处理类的技巧。在计算机编程,尤其是GUI(图形用户界面)应用开发中,鼠标事件是用户交互的重要部分。这篇...

    java字节单位换算公用类

    java中字节的各级单位相互转换的公用方法的公用类

    公用对话框,公用对话框

    在MFC中,每个公用对话框对应一个类,如`CFileDialog`用于文件对话框,`CColorDialog`用于颜色对话框,这些类提供了更多的面向对象特性,如成员变量和方法,使得对话框的配置和控制更加直观。 在.NET Framework中,...

    ABAP2XLSX+封装EXCEL 打印的公用类

    在"ABAP2XLSX+封装EXCEL 打印的公用类"的场景中,我们可能涉及到的是一个专门设计的公共类(ZCL_COMMON),它利用了ABAP2XLSX的功能,并进一步封装了生成和打印Excel文件的逻辑,以便在不同的业务场景下重复使用。...

    DotNet公用类通用公用类源码.7z

    C#常用类库源代码,非常全面,我们在开发程序的过程中再也不用到处去寻找各种功能的代码了,这里面包含了绝大部分开发中常用的功能的源代码,简单复制粘贴即可实现功能,省去你大量的开发时间,本人一直用它,非常...

    红旗传媒机构入职培训--公用类.pptx

    红旗传媒机构入职培训--公用类.pptx

    公用事业与环保产业行业周报:现金流为王,公用事业防御强.pdf

    这使得公用事业行业相对其他行业具有一定的防御性,投资者在市场波动时往往倾向于投资这类行业以降低风险。 市场数据是行业分析不可或缺的一部分。周报中提到了一些关键的市场数据,包括市盈率、各主要指数的点位等...

    mysql公用类工具

    * mysql数据库的通用操作类 * 主要包括查询结果集并封装成list的形式 * 数据库的插入、更新、删除操作(两种方式,包含事物的处理和不包含事物的处理) * 注意:在查询结果封装成list的方法中 * 实体类的字段 ...

Global site tag (gtag.js) - Google Analytics