- 浏览: 123247 次
- 性别:
文章分类
- 全部博客 (86)
- struts2 (1)
- tomcat (5)
- Oracle (12)
- Oracle基础 (10)
- Oracle-IMP (1)
- Oracle-FUNCTION (1)
- java-基础 (21)
- java-术语 (1)
- java-Error (1)
- java-Exception (2)
- java-数据库连接池 (1)
- java-excel-txt (1)
- js-字符串 (1)
- js-基础 (3)
- Python (1)
- Access-基础 (1)
- Often-English (1)
- java-版本控制 (5)
- 报表-IReport (2)
- Mysql (4)
- Java IDE (5)
- Shrio (1)
- SpringMVC (1)
最新评论
忘记了谁总结的 见谅。
import java.math.BigDecimal; public class Arith { /** * 由于Java的简单类型不能够精确的对浮点数进行运算,这个工具类提供精 * 确的浮点数运算,包括加减乘除和四舍五入。 */ //默认除法运算精度 private static final int DEF_DIV_SCALE = 10; //这个类不能实例化 private Arith(){ } /** * 提供精确的加法运算。 * @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 inputData 输入数据数组 * @return 运算结果,如果输入值不合法,返回为-1 */ public static double getMax(double[] inputData) { if (inputData == null || inputData.length == 0) return -1; int len = inputData.length; double max = inputData[0]; for (int i = 0; i < len; i++) { if (max < inputData[i]) max = inputData[i]; } return max; } /** * 求求给定双精度数组中值的最小值 * @param inputData 输入数据数组 * @return 运算结果,如果输入值不合法,返回为-1 */ public static double getMin(double[] inputData) { if (inputData == null || inputData.length == 0) return -1; int len = inputData.length; double min = inputData[0]; for (int i = 0; i < len; i++) { if (min > inputData[i]) min = inputData[i]; } return min; } /** * 求给定双精度数组中值的和 * @param inputData 输入数据数组 * @return 运算结果 */ public static double getSum(double[] inputData) { if (inputData == null || inputData.length == 0) return -1; int len = inputData.length; double sum = 0; for (int i = 0; i < len; i++) { sum = Arith.add(sum, inputData[i]); } return sum; } /** * 求给定双精度数组中值的数目 * @param input Data 输入数据数组 * @return 运算结果 */ public static int getCount(double[] inputData) { if (inputData == null) return -1; return inputData.length; } /** * 求给定双精度数组中值的平均值 * @param inputData 输入数据数组 * @return 运算结果 */ public static double getAverage(double[] inputData) { if (inputData == null || inputData.length == 0) return -1; int len = inputData.length; double result; result = Arith.div(getSum(inputData),len, 3); return result; } /** * 求给定双精度数组中值的平方和 * @param inputData 输入数据数组 * @return 运算结果 */ public static double getSquareSum(double[] inputData) { if(inputData==null||inputData.length==0) return -1; int len=inputData.length; double sqrsum = 0.0; for (int i = 0; i <len; i++) { sqrsum = Arith.add(sqrsum, Arith.mul(inputData[i], inputData[i])); } return sqrsum; } /** * 求给定双精度数组中值的方差 * @param inputData 输入数据数组 * @return 运算结果 */ public static double getVariance(double[] inputData) { int count = getCount(inputData); double sqrsum = getSquareSum(inputData); double average = getAverage(inputData); double result; result = Arith.div(Arith.sub(sqrsum, Arith.mul(count, Arith.mul(average, average))), count, 5); return result; } /** * 求给定双精度数组中值的标准差 * * @param inputData 输入数据数组 * @param scale 保留小数点位数 * @return 运算结果 */ public static double getStandardDiviation(double[] inputData,int scale) { double result; //绝对值化很重要 result = Math.sqrt(Math.abs(getVariance(inputData))); result = Arith.round(result, scale); return result; } public static void main(String[] args){ double [] testData=new double[]{1,2,3,4,5,6,7,8,10}; System.out.println(Arith.getStandardDiviation(testData,3)); }
发表评论
-
判断字符串包含的数量
2014-03-18 15:02 1560方法一: String str = "12312 ... -
POJO中使用int 还是 Integer??
2012-10-09 09:46 0我的选择是包装类好!原因如下: 1。所有的sql使用的默认类型 ... -
PO、VO、DTO、POJO
2012-08-23 16:16 0PO :persistant object持久对象,可以看成是 ... -
JAVA方法重载
2012-08-22 18:25 1102概念性的基础、需要记住。 原文:http://www.fund ... -
反射工具类 (利用反射 get set 属性值 bean <--> map)
2012-08-16 10:44 1602import java.beans.BeanInfo; im ... -
Filter(过滤器)简介
2012-08-14 15:49 1181Filter(过滤器)简介 Filter ... -
break continue 用法
2012-08-03 17:56 863单独使用的时候: break 中断本层循环 conti ... -
String、java.util.Date、java.sql.Date、java.sql.Timestamp互相转换
2012-07-12 19:26 1107import java.text.DateFormat; ... -
jar包查询网站
2012-05-22 16:42 966java jar包查询 根据类查询所在的java包 http ... -
session removeAttribute和invalidate方法
2012-04-10 15:38 1588removeAttribute存在session里的值没用了, ... -
介绍设置Session失效的几种方法
2012-03-31 12:21 722http://www.iteye.com/topic/1105 ... -
LinkedHashMap 和 HashMap的区别之一
2012-03-28 16:46 1029LinkedHashMap 和 HashMap的区别之一 H ... -
getResourceAsStream的用法
2012-03-16 16:00 1168首先,Java中的getResourceAsStream有以下 ... -
The type XXX cannot be resolved. It is indirectly referenced from required .clas
2012-03-16 13:24 1298http://www.cnitblog.com/wjw/arc ... -
Set List remove方法 例子一个
2012-03-09 16:54 823public class ListSetTest { ... -
返回值, null或者空对象 (待整理)
2012-02-21 13:28 948个人习惯返回一个空对象、这样避免了空指针判断 返回empty ... -
indexOf
2012-02-21 11:13 850indexOf(int ch) 【 indexOf( ... -
java中比较数组元素大小
2012-02-20 15:55 3521比较数组 Arrays类提供了 ... -
java处理列转行
2012-02-20 15:52 4655Map<String, Map<String ... -
字符串截取、(待整理)
2012-02-10 10:53 688程序中难免都会用到、顺便整理一下 1、就去“_”之前的字符串 ...
相关推荐
JAVA基础:java.math.BigDecimal的使用方法. JAVA基础:java.math.BigDecimal的使用方法.
Java 中 BigDecimal 的常用方法归类(加减乘除) Java 中的 BigDecimal 类提供了对浮点数的精确运算,包括加减乘除和四舍五入等操作。在 Java 中,简单类型不能够精确地对浮点数进行运算,因此需要使用 BigDecimal ...
在Java编程语言中,BigDecimal是...总之,BigDecimal是Java中处理高精度计算的关键工具,尤其在金融、会计等对精度要求严格的领域。正确理解和使用BigDecimal的方法和策略,能确保程序在进行复杂计算时得出准确的结果。
BigDecimal工具类提供了多种精确的数学运算方法,满足了我们在实际开发中对高精确计算的需求。同时,该工具类还提供了很多实用的方法,使得我们可以更方便地进行数学运算。 知识点: 1. BigDecimal工具类是Java中...
首先,创建 BigDecimal 对象,进行 BigDecimal 的算术运算后,分别建立对货币和百分比格式化的引用,最后利用 BigDecimal 对对象进行格式化控制。 BigDecimal 类是 Java 中一种非常重要的数值类型,用于处理超过 16...
`BigDecimal` 提供了多种构造方法以及一些静态工厂方法用于创建实例。例如: - `new BigDecimal(String val)`:根据字符串创建一个 `BigDecimal` 实例。 - `BigDecimal.valueOf(long val)`:根据长整型值创建一个 `...
### Java中的BigDecimal类详解 在Java编程语言中,当...掌握 `BigDecimal` 的使用对于编写高质量的财务系统或其他对精度有要求的应用程序来说是非常必要的。希望本文能够帮助读者更好地理解和使用 `BigDecimal` 类。
3. **比较操作**:支持小于(`lt`)、大于(`gt`)、等于(`eq`)等比较方法,确保比较结果的准确性。 4. **舍入模式**:提供了多种舍入策略,如`ROUND_UP`、`ROUND_DOWN`、`ROUND_HALF_UP`等,以适应不同场景下的...
BigDecimal是java.math包下的一个类,它提供了对不可变的、任意精度的十进制数的支持。这个类的构造方法允许用户指定一个非常大的整数(包含小数位)作为基数以及一个表示小数点位置的整数。它可以处理非常大的数字...
下面是关于 BigDecimal 的使用方法和注意事项: 1. 导包:在使用 BigDecimal 之前,需要导入 java.math.BigDecimal 包。 2. 创建 BigDecimal 对象:可以通过多种方式创建 BigDecimal 对象,例如将 double 或 ...
BigDecimal.js库的核心功能在于提供了大数运算的方法,如加法、减法、乘法、除法,以及比较、取模、平方根等操作。它还支持数字的格式化输出,可以自定义小数位数,以及进行科学计数法的转换。这些方法使得开发者在...
本文将详细介绍三种将 `BigDecimal` 转换为 `Integer` 的方法。 1. 使用 `intValue()` 方法 `intValue()` 方法是最直接的转换方式,它会忽略 `BigDecimal` 中的小数部分,返回整数值。如果 `BigDecimal` 的值超出...
alert(new BigDecimal("10").add(new BigDecimal("3E+10"))); //- alert(new BigDecimal("10").subtract(new BigDecimal("3E+10"))); //* alert(new BigDecimal("10").multiply(new BigDecimal("3E+10"))); // / ...
BigDecimal提供了避免浮点数运算中的精度损失的方法,适用于金融、会计等对精度有严格要求的领域。这篇博文(尽管链接不可用)可能涉及了BigDecimal的基本操作和常见用法。 首先,BigDecimal的构造方式主要有两种:...
BigDecimal 使用方法小节:包含构造方法及和、差、商、积等运算方式
BigDecimal所创建的是对象,我们不能使用传统的+、-、*、/等算术运算符直接对其对象进行数学运算,而必须调用其相对应的方法。方法中的参数也必须是BigDecimal的对象。构造器是类的特殊方法,专门用来创建对象,特别...
在金融或会计系统中,对数据的精度要求很高,BigDecimal就成为首选的数据类型。 在“MyEditTextApplication”中,我们需要关注以下几个关键知识点: 1. **EditText监听**:首先,我们需要监听EditText中的输入事件...
复杂的BigDecimal计算,需要开方的式子,可输入结果精确位数
总之,BigDecimal 是 Java 中用于高精度计算的关键工具,通过其提供的方法和舍入模式,可以确保在财务等对精度有严格要求的场景下进行准确的计算。在实际编程中,应优先使用字符串构造 BigDecimal 对象,并合理设置...
而`BigDecimal`类提供了对任意精度的十进制数的支持,确保了商业计算中的准确性。 ### `BigDecimal`的基本操作 1. **加法**:通过调用`add()`方法完成两个`BigDecimal`对象的相加。例如: ```java BigDecimal ...