数学运算辅助类,希望对大家有所帮助

import java.math.BigDecimal;  

/**  * 数学运算辅助类。  *   * @author Elfy * @date 2013年03月21日  */  public class MathUtil {  

    /**      * 功能:将字符串转换为BigDecimal,一般用于数字运算时。      *       * @author Elfy     * @date 2013年03月21日       * @param str      *            字符串      * @return BigDecimal,str为empty时返回null。      */      public static BigDecimal toBigDecimal(String str) {          if (StringUtil.isEmpty(str)) {              return null;          }          return new BigDecimal(str);      }  

    /**      * 功能:将字符串抓换为double,如果失败返回默认值。      *       * @author Elfy     * @date 2013年03月21日      * @param str      *            字符串      * @param defaultValue      *            失败时返回的默认值      * @return double      */      public static double toDouble(String str, double defaultValue) {          if (str == null) {              return defaultValue;          }          try {              return Double.parseDouble(str);          } catch (NumberFormatException nfe) {              return defaultValue;          }      }  

    /**      * 功能:将字符串抓换为float,如果失败返回默认值。      *       * @author Elfy     * @date 2013年03月21日      * @param str      *            字符串      * @param defaultValue      *            失败时返回的默认值      * @return float      */      public static float toFloat(String str, float defaultValue) {          if (str == null) {              return defaultValue;          }          try {              return Float.parseFloat(str);          } catch (NumberFormatException nfe) {              return defaultValue;          }      }  

    /**      * 功能:将字符串抓换为long,如果失败返回默认值。      *       * @author Elfy     * @date 2013年03月21日      * @param str      *            字符串      * @param defaultValue      *            失败时返回的默认值      * @return long      */      public static long toLong(String str, long defaultValue) {          if (str == null) {              return defaultValue;          }          try {              return Long.parseLong(str);          } catch (NumberFormatException nfe) {              return defaultValue;          }      }  

    /**      * 功能:将字符串抓换为int,如果失败返回默认值。      *       * @author Elfy     * @date 2013年03月21日      * @param str      *            字符串      * @param defaultValue      *            失败时返回的默认值      * @return int      */      public static int toInt(String str, int defaultValue) {          if (str == null) {              return defaultValue;          }          try {              return Integer.parseInt(str);          } catch (NumberFormatException nfe) {              return defaultValue;          }      }  

    /**      * <p>      * 得到两个 <code>double</code>值中最大的一个.      * </p>      *       * @param a      *            值 1      * @param b      *            值 2      * @return 最大的值      * @author Elfy     * @date 2013年03月21日      */      public static float getMax(float a, float b) {          if (Float.isNaN(a)) {              return b;          } else if (Float.isNaN(b)) {              return a;          } else {              return Math.max(a, b);          }      }  

    /**      * <p>      * 得到数组中最大的一个.      * </p>      *       * @param array      *            数组不能为null,也不能为空。      * @return 得到数组中最大的一个.      * @throws IllegalArgumentException      *             如果 <code>数组</code> 是 <code>null</code>      * @throws IllegalArgumentException      *             如果 <code>数组</code>是空      * @author Elfy     * @date 2013年03月21日      */      public static float getMax(float[] array) {          // Validates input          if (array == null) {              throw new IllegalArgumentException("The Array must not be null");          } else if (array.length == 0) {              throw new IllegalArgumentException("Array cannot be empty.");          }  

        // Finds and returns max          float max = array[0];          for (int j = 1; j < array.length; j++) {              max = getMax(array[j], max);          }  

        return max;      }  

    /**      * <p>      * 得到数组中最大的一个.      * </p>      *       * @param array      *            数组不能为null,也不能为空。      * @return 得到数组中最大的一个.      * @throws IllegalArgumentException      *             如果 <code>数组</code> 是 <code>null</code>      * @throws IllegalArgumentException      *             如果 <code>数组</code>是空      * @author Elfy     * @date 2013年03月21日      */      public static double getMax(double[] array) {          // Validates input          if (array == null) {              throw new IllegalArgumentException("The Array must not be null");          } else if (array.length == 0) {              throw new IllegalArgumentException("Array cannot be empty.");          }  

        // Finds and returns max          double max = array[0];          for (int j = 1; j < array.length; j++) {              max = getMax(array[j], max);          }  

        return max;      }  

    /**      * <p>      * 得到两个 <code>double</code>值中最大的一个.      * </p>      *       * @param a      *            值 1      * @param b      *            值 2      * @return 最大的值      * @author Elfy     * @date 2013年03月21日      * */      public static double getMax(double a, double b) {          if (Double.isNaN(a)) {              return b;          } else if (Double.isNaN(b)) {              return a;          } else {              return Math.max(a, b);          }      }  

    /**      * <p>      * 得到两个float中最小的一个。      * </p>      *       * @param a      *            值 1      * @param b      *            值 2      * @return double值最小的      * @author Elfy     * @date 2013年03月21日      */      public static float getMin(float a, float b) {          if (Float.isNaN(a)) {              return b;          } else if (Float.isNaN(b)) {              return a;          } else {              return Math.min(a, b);          }      }  

    /**      * <p>      * 返回数组中最小的数值。      * </p>      *       * @param array      *            数组不能为null,也不能为空。      * @return 数组里面最小的float      * @throws IllegalArgumentException      *             如果<code>数组</code>是<code>null</code>      * @throws IllegalArgumentException      *             如果<code>数组</code>是空      * @author Elfy     * @date 2013年03月21日      */      public static float getMin(float[] array) {          // Validates input          if (array == null) {              throw new IllegalArgumentException("数组不能为null。");          } else if (array.length == 0) {              throw new IllegalArgumentException("数组不能为空。");          }  

        // Finds and returns min          float min = array[0];          for (int i = 1; i < array.length; i++) {              min = getMin(array[i], min);          }  

        return min;      }  

    /**      * <p>      * 返回数组中最小的double。      * </p>      *       * @param array      *            数组不能为null,也不能为空。      * @return 数组里面最小的double      * @throws IllegalArgumentException      *             如果<code>数组</code>是<code>null</code>      * @throws IllegalArgumentException      *             如果<code>数组</code>是空      * @author Elfy     * @date 2013年03月21日      */      public static double getMin(double[] array) {          // Validates input          if (array == null) {              throw new IllegalArgumentException("数组不能为null。");          } else if (array.length == 0) {              throw new IllegalArgumentException("数组不能为空。");          }          // Finds and returns min          double min = array[0];          for (int i = 1; i < array.length; i++) {              min = getMin(array[i], min);          }          return min;      }  

    /**      * <p>      * 得到两个double中最小的一个。      * </p>      *       * @param a      *            值 1      * @param b      *            值 2      * @return double值最小的      * @author Elfy     * @date 2013年03月21日       */      public static double getMin(double a, double b) {          if (Double.isNaN(a)) {              return b;          } else if (Double.isNaN(b)) {              return a;          } else {              return Math.min(a, b);          }      }  

    /**      * 返回两个double的商 first除以second。      *       * @param first      *            第一个double      * @param second      *            第二个double      * @return double      * @author Elfy     * @date 2013年03月21日       */      public static double divideDouble(double first, double second) {          BigDecimal b1 = new BigDecimal(first);          BigDecimal b2 = new BigDecimal(second);          return b1.divide(b2).doubleValue();      }  

    /**      * 返回两个double的乘积 first*second。      *       * @param first      *            第一个double      * @param second      *            第二个double      * @return double      * @author Elfy     * @date 2013年03月21日       */      public static double multiplyDouble(double first, double second) {          BigDecimal b1 = new BigDecimal(first);          BigDecimal b2 = new BigDecimal(second);          return b1.multiply(b2).doubleValue();      }  

    /**      * 返回两个double的差值 first-second。      *       * @param first      *            第一个double      * @param second      *            第二个double      * @return double      * @author Elfy     * @date 2013年03月21日       */      public static double subtractDouble(double first, double second) {          BigDecimal b1 = new BigDecimal(first);          BigDecimal b2 = new BigDecimal(second);          return b1.subtract(b2).doubleValue();      }  

    /**      * 返回两个double的和值 first+second。      *       * @param first      *            第一个double      * @param second      *            第二个double      * @return double      * @author Elfy     * @date 2013年03月21日      */      public static double sumDouble(double first, double second) {          BigDecimal b1 = new BigDecimal(first);          BigDecimal b2 = new BigDecimal(second);          return b1.add(b2).doubleValue();      }  

    /**      * 格式化double指定位数小数。例如将11.123格式化为11.1。      *       * @param value      *            原double数字。      * @param decimals      *            小数位数。      * @return 格式化后的double,注意为硬格式化不存在四舍五入。      * @author Elfy     * @date 2013年03月21日      */      public static String formatDouble(double value, int decimals) {          String doubleStr = "" + value;          int index = doubleStr.indexOf(".") != -1 ? doubleStr.indexOf(".")                  : doubleStr.indexOf(",");          // Decimal point can not be found...          if (index == -1)              return doubleStr;          // Truncate all decimals          if (decimals == 0) {              return doubleStr.substring(0, index);          }          int len = index + decimals + 1;          if (len >= doubleStr.length())              len = doubleStr.length();          double d = Double.parseDouble(doubleStr.substring(0, len));          return String.valueOf(d);      }  

    /**      * 生成一个指定位数的随机数,并将其转换为字符串作为函数的返回值。      *       * @param numberLength      *            随机数的位数。      * @return String 注意随机数可能以0开头。      * @author Elfy     * @date 2013年03月21日      */      public static String randomNumber(int numberLength) {          // 记录生成的每一位随机数          StringBuffer sb = new StringBuffer();          for (int i = 0; i < numberLength; i++) {              // 每次生成一位,随机生成一个0-10之间的随机数,不含10。              Double ranDouble = Math.floor(Math.random() * 10);              sb.append(ranDouble.intValue());          }          return sb.toString();      }  

    /**      * 功能:生成一个在最大数和最小数之间的随机数。会出现最小数,但不会出现最大数。      *       * @author Elfy     * @date 2013年03月21日      * @param minNum      *            最小数      * @param maxNum      *            最大数      * @return int      */      public static int randomNumber(int minNum, int maxNum) {          if (maxNum <= minNum) {              throw new RuntimeException("maxNum必须大于minNum!");          }          // 计算出来差值          int subtract = maxNum - minNum;          Double ranDouble = Math.floor(Math.random() * subtract);          return ranDouble.intValue() + minNum;      }  

    /**      * 功能:生成一个在最大数和最小数之间的随机数。会出现最小数,但不会出现最大数。<br/>      * 但不随机notin数组中指定的数字, 如果可随机的范围较小,可能会一直随机不到,或者随机的很慢。      *       * @author Elfy     * @date 2013年03月21日       * @param minNum      *            最小数      * @param maxNum      *            最大数      * @param notin      *            不随机数组这些数字      * @return int      */      public static int randomNumber(int minNum, int maxNum, Integer[] notin) {          if (notin.length >= (maxNum - minNum)) {              throw new RuntimeException("notin数组的元素已经把可以随机的都排除了,无法得到随机数!");          }          while (true) {              int num = randomNumber(minNum, maxNum);              if (!CollectionUtil.arrayContain(notin, num)) {                  return num;              }          }      }  }  

JAVA基础篇【工具类】MathUtil 数学运算辅助类TG【20130324整理】相关推荐

  1. Java基础篇--工具类操作之计算并输出21世纪的闰年,计算程序的执行时间

    计算并输出21世纪的闰年,计算程序的执行时间. 实现方法不唯一,此方法仅作初学者(自己)参考..... 所用类API介绍 所用方法API介绍 GregorianCalendar类中直接给出了判断是否为 ...

  2. Java基础篇:类的通用格式

    也许理解类的最重要的事情就是它定义了一种新的数据类型.一旦定义后,就可以用这种新类型来创建该类型的对象. 这样,类就是对象的模板(template),而对象就是类的一个instance.既然一个对象就 ...

  3. java基础---Math工具类

    package com.henu;public class Test04 {public static void main(String[] args) {//Math类中的各种方法System.ou ...

  4. Java基础——Arrays工具类的使用

    常用方法: 案例: 实现代码: import java.util.Arrays;public class javatest1 {public static void main(String[] arg ...

  5. 菜鸟学习笔记:Java基础篇7(包装类、时间相关类、文件类、异常处理类)

    菜鸟学习笔记:Java其他常用类 基本数据类型包装类 时间处理和文件处理相关类 Date时间类 SimpleDateFormat Calendar日历类 文件类 异常机制 异常的概念 Java异常处理 ...

  6. Java 线程 - 基础及工具类 (二)

    Java 并发系列文章 Java 线程 - 并发理论基础(一) Java 线程 - 基础及工具类 (二) Java 线程 - 并发设计模式 (三) Java 线程(二) 通用的线程生命周期 Java ...

  7. Java基础篇——类与子类

    1. 什么是类,什么是子类? 类:类是Java程序的基本要素,一个Java应用程序就是由若干个类所构成的.类是Java语言中最重要的"数据类型". 子类:由继承得到的类叫子类. 引 ...

  8. Java基础篇--设计模式

    目录 前言 设计模式 创建型模式 单例模式 工厂方法模式 抽象工厂模式 建造者模式 原型模式 结构型模式 适配器模式 桥接模式 组合模式 装饰模式 外观模式 亨元模式 代理模式 行为型模式: 访问者模 ...

  9. 《Java 后端面试经》Java 基础篇

    <Java 后端面试经>专栏文章索引: <Java 后端面试经>Java 基础篇 <Java 后端面试经>Java EE 篇 <Java 后端面试经>数 ...

最新文章

  1. Day 33 并发编程3
  2. Windows 32位程序在64位操作系统下运行
  3. Cisco路由器配置命令之模式转换命令
  4. LINUX装魂斗罗游戏,魂斗罗战甲1-支援形态装置搭配思路及攻略
  5. 7-157 求一元二次方程的根 (20 分)
  6. mysql数据类型的学习心得_MySQL自学总结 (一到四章)
  7. docker搭建pgadmin并挂载
  8. msfvenom 生成php木马,利用msfvenom生成木马程序
  9. echarts文档解读
  10. excel转置怎么操作_收藏!Excel表格常见问题,超详细的解决方案
  11. 我奋斗了十八年不是为了和你喝一杯咖啡
  12. mt6735 [AT Command] AP下发AT+CLAC命令后 ,手机出现宕机
  13. 服务器拒绝mac访问共享文件,Mac怎样访问局域网共享文件
  14. rviz中显示Marker标记
  15. html制作钢铁侠心脏,钢铁侠胸部的“心脏”并非特效,那是怎么放进身体的?...
  16. Eclipse从零开始搭建一个SpringBoot项目
  17. appbase 和docbase
  18. 华为手机传感器测试软件,华为P8拍摄能力测试 IMX278传感器到底魅力何在
  19. 不小心合并了icloud通讯录_iCloud合并通讯录没了如何恢复?最简单的技巧分析
  20. Java Swing事件处理——键盘事件及监听处理 KeyListener 按键测试

热门文章

  1. 信息安全 数据赛 铁人三项_信息安全铁人三项赛-赛事章程-信息安全铁人三项赛...
  2. 内网穿透及端口转发(下)
  3. 【R语言与数据分析实战】数据操作(一):基于向量的处理与外部数据处理
  4. ORA-04098: 触发器无效且未通过重新验证
  5. 罗马时钟 基于前端CSS、JS 实现
  6. 区块链技术与农产品供应链结合的价值研究
  7. 【JS】原始值与引用值、执行上下文与作用域链、作用域链增强、变量声明、标识符查找
  8. 毕业设计 基于STM32的环境监控报警系统
  9. LED 控制卡 单元板 接口引脚定义
  10. 手撸一个基于Springboot的文件管理系统,可用于练手或者毕业设计