码迷,mamicode.com
首页 > 其他好文 > 详细

高精度运算

时间:2016-08-16 23:30:15      阅读:232      评论:0      收藏:0      [点我收藏+]

标签:

在开发中高精度运算使用并非非常频繁,float和double的精度实际上能够满足绝大多数需要,且高精度运算效率比常规的运算要慢一点,但使用高精度运算往往是为了使用其中便捷的API。官方提供的高精度运算的类主要两个

BigInteger:当数值范围超过long时使用

BigDecimal:几乎涵盖BigInteger功能,还可以保留小数点任意位数,理论上精度无穷大,以下主要说明此类
  
注:两者API很相似

加减乘除

BigDecimal aaa = new BigDecimal(20);

BigDecimal bbb = new BigDecimal(3);

BigDecimal aaa.add(bbb):加法运算,返回运算后结果

BigDecimal aaa.subtract(bbb):减法运算,返回运算后结果

BigDecimal aaa.multiply(bbb):乘法运算,返回运算后结果

BigDecimal aaa.divide(bbb):除法运算,返回运算后结果

保留小数点

主要针对除法运算,可能存在无限小数,若不进行舍入操作会报错

BigDecimal result = aaa.divide(bbb, 8, BigDecimal.ROUND_HALF_UP);

参数1:除数

参数2:保留的精度,要求保留几位小数

参数3:舍入模式,常用几种舍入方式

  BigDecimal.ROUND_HALF_UP:四舍五入

  BigDecimal.ROUND_CEILING:舍入上限值,比如结果为1.1,则会返回2

  BigDecimal.ROUND_FLOOR:舍入下限值,比如结果为1.8,则会返回1

其他API

* *Value():转换成基本数据类型,比如aaa.intValue(),aaa.doubleValue()等

BigInteger toBigInteger():转换成BigInteger类型

BigDecimal.ZERO:代表0

BigDecimal.ONE:代表1

BigDecimal.TEN:代表10

高精度运算

标签:

原文地址:http://www.cnblogs.com/windyrain/p/5778017.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!