- 浏览: 544807 次
- 性别:
- 来自: 福建
文章分类
最新评论
-
xuehanxin:
修改tomcat-maven-plugin启动端口 -
maimode:
嗯,受用了。
java移动文件 -
huqing2010:
不灵!
java移动文件 -
yhx432:
zk1878 写道楼主,直接在eclipse中使用file-& ...
将maven2创建的web项目转为myEclipse项目 -
zk1878:
楼主,直接在eclipse中使用file->import ...
将maven2创建的web项目转为myEclipse项目
package com.org.assistant.util;
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();
}
/**
* 提供精确的类型转换(Float)
* @param v 需要被转换的数字
* @return 返回转换结果
*/
public static float convertsToFloat(double v){
BigDecimal b = new BigDecimal(v);
return b.floatValue();
}
/**
* 提供精确的类型转换(Int)不进行四舍五入
* @param v 需要被转换的数字
* @return 返回转换结果
*/
public static int convertsToInt(double v){
BigDecimal b = new BigDecimal(v);
return b.intValue();
}
/**
* 提供精确的类型转换(Long)
* @param v 需要被转换的数字
* @return 返回转换结果
*/
public static long convertsToLong(double v){
BigDecimal b = new BigDecimal(v);
return b.longValue();
}
/**
* 返回两个数中大的一个值
* @param v1 需要被对比的第一个数
* @param v2 需要被对比的第二个数
* @return 返回两个数中大的一个值
*/
public static double returnMax(double v1,double v2){
BigDecimal b1 = new BigDecimal(v1);
BigDecimal b2 = new BigDecimal(v2);
return b1.max(b2).doubleValue();
}
/**
* 返回两个数中小的一个值
* @param v1 需要被对比的第一个数
* @param v2 需要被对比的第二个数
* @return 返回两个数中小的一个值
*/
public static double returnMin(double v1,double v2){
BigDecimal b1 = new BigDecimal(v1);
BigDecimal b2 = new BigDecimal(v2);
return b1.min(b2).doubleValue();
}
/**
* 精确对比两个数字
* @param v1 需要被对比的第一个数
* @param v2 需要被对比的第二个数
* @return 如果两个数一样则返回0,如果第一个数比第二个数大则返回1,反之返回-1
*/
public static int compareTo(double v1,double v2){
BigDecimal b1 = new BigDecimal(v1);
BigDecimal b2 = new BigDecimal(v2);
return b1.compareTo(b2);
}
}
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();
}
/**
* 提供精确的类型转换(Float)
* @param v 需要被转换的数字
* @return 返回转换结果
*/
public static float convertsToFloat(double v){
BigDecimal b = new BigDecimal(v);
return b.floatValue();
}
/**
* 提供精确的类型转换(Int)不进行四舍五入
* @param v 需要被转换的数字
* @return 返回转换结果
*/
public static int convertsToInt(double v){
BigDecimal b = new BigDecimal(v);
return b.intValue();
}
/**
* 提供精确的类型转换(Long)
* @param v 需要被转换的数字
* @return 返回转换结果
*/
public static long convertsToLong(double v){
BigDecimal b = new BigDecimal(v);
return b.longValue();
}
/**
* 返回两个数中大的一个值
* @param v1 需要被对比的第一个数
* @param v2 需要被对比的第二个数
* @return 返回两个数中大的一个值
*/
public static double returnMax(double v1,double v2){
BigDecimal b1 = new BigDecimal(v1);
BigDecimal b2 = new BigDecimal(v2);
return b1.max(b2).doubleValue();
}
/**
* 返回两个数中小的一个值
* @param v1 需要被对比的第一个数
* @param v2 需要被对比的第二个数
* @return 返回两个数中小的一个值
*/
public static double returnMin(double v1,double v2){
BigDecimal b1 = new BigDecimal(v1);
BigDecimal b2 = new BigDecimal(v2);
return b1.min(b2).doubleValue();
}
/**
* 精确对比两个数字
* @param v1 需要被对比的第一个数
* @param v2 需要被对比的第二个数
* @return 如果两个数一样则返回0,如果第一个数比第二个数大则返回1,反之返回-1
*/
public static int compareTo(double v1,double v2){
BigDecimal b1 = new BigDecimal(v1);
BigDecimal b2 = new BigDecimal(v2);
return b1.compareTo(b2);
}
}
评论
6 楼
zyfine
2009-01-19
double类型的数据 本来就是不精确的
你同样定义两个double类型的数据1.0
他们可能相等 也可能不相等
可能一个是0.99999999 一个是1.000001
你同样定义两个double类型的数据1.0
他们可能相等 也可能不相等
可能一个是0.99999999 一个是1.000001
5 楼
td-andy
2008-10-23
BigDecimal b1 = new BigDecimal(Double.toString(v1));
快一年了啊 Double.toString() 想不通为什么要这么构造BigDecimal
快一年了啊 Double.toString() 想不通为什么要这么构造BigDecimal
4 楼
td-andy
2008-10-23
BigDecimal b1 = new BigDecimal(Double.toString(v1));
快一年了啊 Double.toString() 想不通为什么要这么构造BigDecimal
快一年了啊 Double.toString() 想不通为什么要这么构造BigDecimal
3 楼
junjun
2007-11-29
高手高手
赞一个啊
赞一个啊
2 楼
xiuying
2007-11-23
我刚才在四台机器上都试过了都是77.1646 没问题哦
如果你试着不转换直接输出C呢?
出现0000001只有double类型在做减、乘、除的时候会出现这个问题!
如果你试着不转换直接输出C呢?
出现0000001只有double类型在做减、乘、除的时候会出现这个问题!
1 楼
xmeda
2007-11-23
我仔使用的时候
用如下代码
BigDecimal a=BigDecimal.valueOf(8.209);
BigDecimal c=BigDecimal.valueOf(9.40).multiply(a);
double d=c.doubleValue();
在不同的机子上得到不同的精度值 77.1646 和77.16460000000001
不知道是咋回事 代码一摸一样
用如下代码
BigDecimal a=BigDecimal.valueOf(8.209);
BigDecimal c=BigDecimal.valueOf(9.40).multiply(a);
double d=c.doubleValue();
在不同的机子上得到不同的精度值 77.1646 和77.16460000000001
不知道是咋回事 代码一摸一样
发表评论
-
sh+tomcat 启动时报内存溢出
2013-11-27 13:59 1045ERROR o.s.web.context.ContextLo ... -
将java项目设置为web项目
2011-05-26 11:46 1514修改项目的.project文件,保存. 在< ... -
java 定时器
2010-04-12 13:15 1444引入定时器相应的jar包。 第一步编写实现类Quart ... -
Java compiler level does not match the version of the installed Java project
2009-12-08 11:02 2580错误:Java compiler level does not ... -
eclipse 常用插件安装地址
2009-11-30 13:04 62891. 安装 Subclipse要安装Subclipse,使用下 ... -
kubuntu下安装eclipse3.5.1点击按钮不行,只能用enter键
2009-11-30 13:01 1264kubuntu下安装eclipse3.5.1在线更新插件的时候 ... -
Flex Builder 3.0 For MyEclipse 7.0M1 安装方法
2009-11-24 17:29 2548今天突然说要搞flex,所以就在网上搞了点环境安装的方法 F ... -
基于fileupload文件批量上传
2008-11-11 11:44 3438执行类: /** * @author LXY * @date ... -
关于JAVA的Date
2008-03-21 10:30 12241.计算某一月份的最大天数 Calendar time=Ca ... -
jdk5的装箱与拆箱
2007-12-13 21:08 1342java的8个基本类型: 整数:short byte lon ... -
限制使用泛型可用类型
2007-12-09 15:48 1476package com.jdk150.bean; impor ... -
jdk1.5泛型的应用
2007-12-09 14:52 1775package com.jdk150.bean; impor ... -
1.5下数组可以这样输出
2007-11-30 15:06 1459String stra[]={"1",&q ... -
java递归删除文件和文件夹
2007-10-24 14:13 4807public class DelFileTest() { ... -
用jndi连接数据库
2007-10-17 16:08 2780在appContext下配: <bean id=&quo ... -
无法解析类型 java.lang.Object。从必需的 .class 文件间接引用了它
2007-09-29 22:29 16355今天突然碰到一个郁闷问题 无法解析类型 java.lang.O ... -
java移动文件
2007-09-20 18:03 10603//文件原地址 File oldFile = new ... -
JAVA格式化日期
2007-09-13 09:34 2590Date dd = new Date(); //String ... -
需求分析的20条法则
2007-09-11 09:06 1487需求分析的20条法则 邢 ... -
java创建和删除文件夹、文件
2007-09-04 14:48 7969//新建一个文件夹 public void newFolde ...
相关推荐
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 是 Java 中用于高精度计算的关键工具,通过其提供的方法和舍入模式,可以确保在财务等对精度有严格要求的场景下进行准确的计算。在实际编程中,应优先使用字符串构造 BigDecimal 对象,并合理设置...
复杂的BigDecimal计算,需要开方的式子,可输入结果精确位数
而`BigDecimal`类提供了对任意精度的十进制数的支持,确保了商业计算中的准确性。 ### `BigDecimal`的基本操作 1. **加法**:通过调用`add()`方法完成两个`BigDecimal`对象的相加。例如: ```java BigDecimal ...