- 浏览: 2272618 次
- 性别:
- 来自: 成都
文章分类
- 全部博客 (357)
- J2EE (49)
- JavaScript (40)
- Spring (19)
- Struts (5)
- CSS (8)
- Hibernate (16)
- Java (67)
- DWR (4)
- JSON (3)
- XFIRE (1)
- Tomcat (1)
- Ant (2)
- 设计模式 (2)
- 经典收藏 (2)
- JSP (10)
- Linux (0)
- WebLogic (11)
- myeclipse (13)
- Buffalo (4)
- 文件上传相关 (1)
- oracle (33)
- html (6)
- JSTL (3)
- SVN (2)
- GIT (1)
- 孙卫琴(Java网络编程精解) (1)
- DOM4J (2)
- Swing (1)
- AJAX (1)
- Eclipse (5)
- 日志组件 (3)
- PowerDesigner (1)
- Jquery (22)
- IT技术开发相关网址 (1)
- Nutz (1)
- 其它 (1)
- Velocity (3)
- WebService (1)
- MySql (2)
- Android (1)
- Maven (2)
- Quartz (11)
- Lucene (1)
- springsource (1)
- Junit (1)
- Activiti (0)
最新评论
-
yzlseu:
拼凑,没有营养
Activiti进阶—分配组任务 -
zhangsenhao:
非常赞!代码很清楚
SpringMVC3.0+MyIbatis3.0(分页示例) -
xiamw2000:
分页写得不对,应该是 : order by ${orderNa ...
SpringMVC3.0+MyIbatis3.0(分页示例) -
sheertewtw:
...
SpringMVC:上传与下载 -
kingtoon:
...
XSS之xssprotect
参考资料
1 java.math.BigDecimal的用法
http://tech.e800.com.cn/articles/2009/525/1243215079206_1.html
http://jeelee.iteye.com/blog/652003
2 Java BigDecimal转换示例
http://www.blogjava.net/javagrass/archive/2011/07/04/353618.html
3 BigDecimal不整除的一个异常
http://zengbin163-gmail-com.iteye.com/blog/433862
请看以下代码
打印结果BigDecimal sum为0
正确的做法是:在循环中这样设置
Java也提供了BigInteger类,感觉这个类没用BigDecimal方便,BigInteger它没有接受int类型的构造函数.BigDecimal提供了四个常用方法
BigDecimal不整除抛出的异常,请设置精确度!
Exception in thread "main" java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.
at java.math.BigDecimal.divide(BigDecimal.java:1278)
at main.Main.main(Main.java:41)
以下为网上抄录并且总结!
在java中,float和double只能用来做科学计算或者是工程计算,在商业计算中我们要用java.math.BigDecimal
注意事项:如果需要精确计算,非要用String来够造BigDecimal
最后摘录网上的一个程序员写的精确工具类,在很多文章中都有此代码,可以参考下
1 java.math.BigDecimal的用法
http://tech.e800.com.cn/articles/2009/525/1243215079206_1.html
http://jeelee.iteye.com/blog/652003
2 Java BigDecimal转换示例
http://www.blogjava.net/javagrass/archive/2011/07/04/353618.html
3 BigDecimal不整除的一个异常
http://zengbin163-gmail-com.iteye.com/blog/433862
请看以下代码
int sumInt = 0; BigDecimal sumBd = new BigDecimal(0); for(int i=0;i<10;i++){ sumInt += i; sumBd.add(new BigDecimal(i)); } System.out.println("int sum : " + sumInt + ",BigDecimal sum : " + sumBd);
打印结果BigDecimal sum为0
正确的做法是:在循环中这样设置
sumBd = sumBd.add(new BigDecimal(i));
Java也提供了BigInteger类,感觉这个类没用BigDecimal方便,BigInteger它没有接受int类型的构造函数.BigDecimal提供了四个常用方法
BigDecimal testBg1 = new BigDecimal(5); BigDecimal testBg2 = new BigDecimal(3); BigDecimal sumBg = testBg1.add(testBg2); System.out.println("testBg1: "+ testBg1 + ",testBg2: " +testBg2+",相加: " + sumBg); BigDecimal subtractBg = testBg1.subtract(testBg2); System.out.println("testBg1: "+ testBg1 + ",testBg2: " +testBg2+",相减: " + subtractBg); BigDecimal multiplyBg = testBg1.multiply(testBg2); System.out.println("testBg1: "+ testBg1 + ",testBg2: " +testBg2+",相乘: " + multiplyBg); //注意以下相除会抛出异常,原因: 通过BigDecimal的divide方法进行除法时当不整除,出现无限循环小数时,就会抛异常 //BigDecimal divideBg = testBg1.divide(testBg2); //System.out.println("testBg1: "+ testBg1 + ",testBg2: " +testBg2+",相除: " + divideBg); //解决方法是:设置精确度;就是给divide设置精确的小数点divide(xxxxx,2, BigDecimal.ROUND_HALF_EVEN) //其中的第二个参数表示的是:保留小数点之后多少位 BigDecimal divideBg = testBg1.divide(testBg2,10,BigDecimal.ROUND_HALF_EVEN); System.out.println("testBg1: "+ testBg1 + ",testBg2: " +testBg2+",相除: " + divideBg);
BigDecimal不整除抛出的异常,请设置精确度!
Exception in thread "main" java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.
at java.math.BigDecimal.divide(BigDecimal.java:1278)
at main.Main.main(Main.java:41)
以下为网上抄录并且总结!
在java中,float和double只能用来做科学计算或者是工程计算,在商业计算中我们要用java.math.BigDecimal
注意事项:如果需要精确计算,非要用String来够造BigDecimal
最后摘录网上的一个程序员写的精确工具类,在很多文章中都有此代码,可以参考下
import java.math.BigDecimal; /** * @author Jstar */ public class Arith { // 默认除法运算精度 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(); } }
发表评论
-
java json-lib & jQuery & jsonp
2016-06-30 11:31 780参考链接: 1、http://hanqunfeng.iteye ... -
随机分配算法(Intege)
2016-01-08 13:05 5146参考资料: http://blog.csdn.net/yaer ... -
XSS之xssprotect
2012-12-07 23:03 29360参考资料 1 跨网站脚本 ... -
Java之Thread(线程题)
2011-10-31 12:33 1947特别说明:java线程相关的参考了张孝祥老师的代码 参考资料 ... -
Java之ThreadLocal(Synchronized)
2011-10-31 10:10 2643参考资料 1 深入研究java.lang.ThreadLoca ... -
Java之synchronized,wait,notify结合运用示例
2011-10-26 11:54 5894场景一:要求二个线程各 ... -
Java之synchronized深入应用
2011-10-23 08:03 1910参考资料 1 java synchronized详解 http ... -
Java之Timer入门
2011-10-11 15:32 1653参考资料 1 java中timer用 ... -
Java之线程(匿名内部类)
2011-10-10 16:36 163641 Thread对象 Thread t = new Thr ... -
Java之线程(join)
2011-10-10 15:39 1425运用场景:多个线程之间 ... -
Java之线程(synchronized,wait(),notify(),notifyAll())
2011-10-10 15:03 3202参考资料 Java多线程入门大全(适用于有一定基础者) htt ... -
Java之线程(sleep,线程名)
2011-10-10 13:09 9681参考资料 1 Java线程:创建与启动 http://lava ... -
Java之线程入门
2011-10-10 11:11 1504参考资料 1 Java线程:概 ... -
java之表反向生成类
2011-09-23 16:41 3416环境:XP+JDK1.5+Oracle10g 注意事项 1 请 ... -
java之线程, NIO学习资料
2011-09-19 12:13 1097Concurrent In Java 6 第一部分 集合 ... -
java.lang.OutOfMemoryError异常解决方法
2011-08-27 16:47 2057转载:java.lang.OutOfMemoryError异常 ... -
Jcom之jp.ne.so_net.ga2.no_ji.jcom.JComException: createInstance() failed HRESULT=
2011-08-25 12:33 11652参考资料 java应用jcom将word转pdf http:/ ... -
Quartz之AnnualCalendar
2011-08-11 17:14 5768问题1 我想排除一年中 ... -
Quartz之InterruptableJob
2011-08-11 11:03 11734问题1 由于业务需要,停止Quartz中正在执行的任务 Qua ... -
Quartz之JobExecutionException
2011-08-11 10:06 13308问题1 如果你的任务执 ...
相关推荐
Java SE程序 BigDecimal类Java SE程序 BigDecimal类Java SE程序 BigDecimal类Java SE程序 BigDecimal类Java SE程序 BigDecimal类Java SE程序 BigDecimal类Java SE程序 BigDecimal类Java SE程序 BigDecimal类Java SE...
NULL 博文链接:https://ollevere.iteye.com/blog/1528655
BigInteger.java BigDecimal.java 文件 源代码
关于java中BigDecimal的简介(csdn)————程序
主要介绍了Java编程BigDecimal用法实例分享,具有一定参考价值,需要的朋友可以了解下。
主要介绍了java中BigDecimal的操作方法,较为详细的分析了BigDecimal类在进行商业计算时的应用方法,精度以及注意事项等问题,需要的朋友可以参考下
主要介绍了Java中BigDecimal类的简单用法,是Java应用程序开发中非常实用的技巧,本文以实例形式对此进行了简单的分析,需要的朋友可以参考下
对于不需要任何准确计算精度的数字可以直接使用float或double,但是如果需要精确计算的结果,则必须使用BigDecimal类,而且使用BigDecimal类也可以进行大数的操作,下面这篇文章给大家介绍了Java中BigDecimal的加减...
JAVA基础:java.math.BigDecimal的使用方法. JAVA基础:java.math.BigDecimal的使用方法.
主要介绍了Java中BigDecimal类的使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
java.math.BigDecimal 操作类,包含加减乘除、String型加减乘除精度格式化转换计算等
下面小编就为大家带来一篇Java中BigDecimal的基本运算(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
Java对BigDecimal常用方法的归类(加减乘除).doc
主要介绍了浅谈java中BigDecimal类的简单用法,在开发时,如果我们需要精确计算的结果,必须使用BigDecimal类来操作。感兴趣的话可以了解一下
今天小编就为大家分享一篇关于Java使用BigDecimal进行运算封装的实际案例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
解决mongo数据插入时 报错问题 mogodb插入数据时报错Can't find a codec for class java.math.BigDecimal
Java中BigInteger的数学运算,BigDecimal 加减乘除运算,Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数。在实际应用中,需要对更大...
之前写过用vector、string实现大数加法,现在用java的BigDecimal类,代码简单很多。但是在online-judge上,java的代码运行时间和内存大得多
javascript的数值精确计算类bigdecimal,改编自java的bigdecimal
借用《Effactive Java》这本书中的话,float和double类型的主要设计目标是为了科学计算和工程计算。他们执行二进制浮点运算,这是为了在广域数值范围上提供较为精确的快速近似计算而精心设计的。然而,它们没有提供...