文档章节

Non-terminating decimal expansion; no exact rep...

Big_BoBo
 Big_BoBo
发布于 2013/10/29 16:26
字数 346
阅读 90
收藏 0
点赞 0
评论 0

由于需要处理精度比较高的浮点数,所以弃用double类型,改用BigDecimal类来进行数值处理。

在加减乘时都没有出现问题,但是到除法运算时,提示了如下错误:

大概的意思是“无法结束的除法表达式;没有精确的除结果”。我当时输入的10/3,结果应该是3.3333....333。

 

于是在网上找资料,发现我原来的处理方式有问题。

BigDecimal num1 = new BigDecimal("10");

BigDecimal num2 = new BigDecimal("3");

BigDecimal num3 = num1.divide(num2);

 

其实devide的函数定义如下

BigDecimal.divide(BigDecimal divisor, int scale, RoundingMode roundingMode) ;

scale为小数位数;

roundingMode为小数模式;

ROUND_CEILING
如果 BigDecimal 是正的,则做 ROUND_UP 操作;如果为负,则做 ROUND_DOWN 操作。
ROUND_DOWN
从不在舍弃(即截断)的小数之前增加数字。
ROUND_FLOOR
如果 BigDecimal 为正,则作 ROUND_UP ;如果为负,则作 ROUND_DOWN 。
ROUND_HALF_DOWN
若舍弃部分> .5,则作 ROUND_UP;否则,作 ROUND_DOWN 。
ROUND_HALF_EVEN
如果舍弃部分左边的数字为奇数,则作 ROUND_HALF_UP ;如果它为偶数,则作 ROUND_HALF_DOWN 。
ROUND_HALF_UP
若舍弃部分>=.5,则作 ROUND_UP ;否则,作 ROUND_DOWN 。
ROUND_UNNECESSARY
该“伪舍入模式”实际是指明所要求的操作必须是精确的,,因此不需要舍入操作。
ROUND_UP
总是在非 0 舍弃小数(即截断)之前增加数字。

写成如下便可通过

BigDecimal num3 = num1.divide(num2,10,BigDecimal.ROUND_HALF_DOWN);

本文转载自:http://blog.csdn.net/lopper/article/details/5314686

共有 人打赏支持
Big_BoBo
粉丝 52
博文 54
码字总数 22137
作品 0
杭州
高级程序员
BigDecimal的divide方法进行除法时当不整除,出现无限循环小数时,异常处理

BigDecimal的divide方法进行除法时当不整除,出现无限循环小数时,就会抛异常的,异常 如下:java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable ...

郏高阳 ⋅ 2014/05/27 ⋅ 0

【java】使用BigDecimal计算时候注意事项

一般数据在用BigDecimal自带的运算方式时候是不会出现问题的,但是碰到了无限小数的时候,这个类直接运算方式就会出现一些取不到位或者溢出的错误。 错误1:Non-terminating decimal expansi...

tr1912 ⋅ 03/31 ⋅ 0

转:BigDecimal 使用方法详解

转贴:http://zhangyinhu8680.iteye.com/blog/1536397 BigDecimal 由任意精度的整数非标度值 和 32 位的整数标度 (scale) 组成。如果为零或正数,则标度是小数点后的位数。如果为负数,则将该...

克温s ⋅ 2016/05/13 ⋅ 0

BigDecimal的使用

这次在APP开发中我遇到了精确计算问题.比如服务器给我一个百分比,我根据这个比例计算出价格,送到服务器.比如:2100.05 * 0.2计算的结果并不是420.01,而是420.010000000005.在《Java解惑》这本...

SunnyTime ⋅ 2016/03/23 ⋅ 0

erlang国际化时间转换(ISO 8601)

什么是ISO 8601 国际标准化组织的国际标准ISO 8601是日期和时间表示方法,全称为<>。目前最新为第三版ISO8601:2004, 第一版为ISO8601:1988, 第二版为ISO8601:2000。 日期和时间的组合表示法:...

nao ⋅ 2016/11/18 ⋅ 0

Java中四则运算的那些坑

使用Java开发多年,感觉自己的水平也在不断提升,但是被Java狂虐却从来都没变过,而且任何一个Java的小角落,都能把我虐的体无完肤,但是无奈要靠Java吃饭,还得恬着脸继续使用下去。说说最近...

古城痴人 ⋅ 2015/06/09 ⋅ 0

Fixed-Point Types (Exact Value) - DECIMAL, NUMERIC

Fixed-Point Types (Exact Value) - DECIMAL, NUMERIC DECIMAL(M,D) The DECIMAL and NUMERIC types store exact numeric data values. These types are used when it is important to prese......

秋风醉了 ⋅ 2014/08/27 ⋅ 0

MySQL数据类型

MySQL数据类型 Integer Types (Exact Value) - INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT Type Storage Minimum Value Maximum Value (Bytes) (Signed/Unsigned) (Signed/Unsi......

秋风醉了 ⋅ 2014/12/10 ⋅ 0

Apache Calcite Avatica 1.8.0 发布

Apache Calcite Avatica 1.8.0 发布了,Apache Calcite 是一个动态数据管理框架,用于 Hadoop 平台。 改进记录如下: Features and bug fixes [CALCITE-1159]Support Kerberos-authenticate......

oschina ⋅ 2016/06/07 ⋅ 0

WebSocket 1.0的学习和简单使用

WebSocket JavaScript API(client) <script> </script> websocket.onopen #当打开一个新的连接时会调用这个方法 websocket.onmessage #当server有数据返回时调用 websocket.send() #向服务端......

ldl123292 ⋅ 2014/08/12 ⋅ 4

没有更多内容

加载失败,请刷新页面

加载更多

下一页

vbs 取文件大小 字节

dim namedim fs, s'name = Inputbox("姓名")'msgbox(name)set fs = wscript.createobject("scripting.filesystemobject") 'fs为FSO实例if (fs.folderexists("c:\temp"))......

vga ⋅ 14分钟前 ⋅ 1

高并发之Nginx的限流

首先Nginx的版本号有要求,最低为1.11.5 如果低于这个版本,在Nginx的配置中 upstream web_app { server 到达Ip1:端口 max_conns=10; server 到达Ip2:端口 max_conns=10; } server { listen ...

算法之名 ⋅ 今天 ⋅ 0

Spring | IOC AOP 注解 简单使用

写在前面的话 很久没更新笔记了,有人会抱怨:小冯啊,你是不是在偷懒啊,没有学习了。老哥,真的冤枉:我觉得我自己很菜,还在努力学习呢,正在学习Vue.js做管理系统呢。即便这样,我还是不...

Wenyi_Feng ⋅ 今天 ⋅ 0

博客迁移到 https://www.jianshu.com/u/aa501451a235

博客迁移到 https://www.jianshu.com/u/aa501451a235 本博客不再更新

为为02 ⋅ 今天 ⋅ 0

win10怎么彻底关闭自动更新

win10自带的更新每天都很多,每一次下载都要占用大量网络,而且安装要等得时间也蛮久的。 工具/原料 Win10 方法/步骤 单击左下角开始菜单点击设置图标进入设置界面 在设置窗口中输入“服务”...

阿K1225 ⋅ 今天 ⋅ 0

Elasticsearch 6.3.0 SQL功能使用案例分享

The best elasticsearch highlevel java rest api-----bboss Elasticsearch 6.3.0 官方新推出的SQL检索插件非常不错,本文一个实际案例来介绍其使用方法。 1.代码中的sql检索 @Testpu...

bboss ⋅ 今天 ⋅ 0

informix数据库在linux中的安装以及用java/c/c++访问

一、安装前准备 安装JDK(略) 到IBM官网上下载informix软件:iif.12.10.FC9DE.linux-x86_64.tar放在某个大家都可以访问的目录比如:/mypkg,并解压到该目录下。 我也放到了百度云和天翼云上...

wangxuwei ⋅ 今天 ⋅ 0

PHP语言系统ZBLOG或许无法重现月光博客的闪耀历史[图]

最近在写博客,希望通过自己努力打造一个优秀的教育类主题博客,名动江湖,但是问题来了,现在写博客还有前途吗?面对强大的自媒体站点围剿,还有信心和可能型吗? 至于程序部分,我选择了P...

原创小博客 ⋅ 今天 ⋅ 0

IntelliJ IDEA 2018.1新特性

工欲善其事必先利其器,如果有一款IDE可以让你更高效地专注于开发以及源码阅读,为什么不试一试? 本文转载自:netty技术内幕 3月27日,jetbrains正式发布期待已久的IntelliJ IDEA 2018.1,再...

Romane ⋅ 今天 ⋅ 0

浅谈设计模式之工厂模式

工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻...

佛系程序猿灬 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部