Using BigDecimal to perform precise calculations with floats.

BigDecimal is a class type. So declare/construct one BigDecimal is in the form like:

 BigDecimal pi = new BigDecimal("3.14159265358979323846");
BigDecimal pi = new BigDecimal(3.14);
BigDecimal pi = new BigDecimal(3.14f);
BigDecimal pi = new BigDecimal(3);

Do the arithmatics:

 pi.multiply(pi);
pi.add(pi);
pi.subtract(pi);
//Usage of division should also point out the precision
MathContext mc = new MathContext(2,BigDecimal.Round_Ceiling);
pi.divide(pi,mc);
//also works
pi.divide(pi,2,BigDecimal.Round_Ceiling);

Compare 2 BigDecimals:

//f<l, f=l, f>l
pi.compareTo(pi);

Print BigDecimals:

System.out.println(pi);

Addendum:

So why normal float can not represent floats precisely? It's because computer represents numbers in radix 2, it can represent floats precisely like 1*2^-1 + 1*2^-3, which is 0.101b = 0.625d. It is known that some numbers can not represent precisely in radix 10, like 1/3b = 0.3d. However, according to 1/3 = 1*3^-1, 1/3d = 0.1r3 precisely.

Java BigDecimal Class的更多相关文章

  1. java bigDecimal and double

    Java BigDecimal和double   BigDecimal是Java中用来表示任意精确浮点数运算的类,在BigDecimal中,使用unscaledValue × 10-scale来表示一 ...

  2. Java BigDecimal类的使用和注意事项

    1.对于金额相关运算,若是精度较高,基本上用BigDecimal进行运算,精度要求低的话用Long.Double即可 2.web后台接受金额用String接受,展示到前端一般也转成 String 3. ...

  3. Java BigDecimal 转换,除法陷阱(转)

    源地址:   http://blog.csdn.net/niannian_315/article/details/24354251 今天在用BigDecimal“出现费解”现象,以前虽然知道要避免用, ...

  4. JAVA BigDecimal 小数点处理

    1,保留两位小数 方法一:{ double c=3.154215; java.text.DecimalFormat myformat=new java.text.DecimalFormat(" ...

  5. Java BigDecimal和double

    BigDecimal类 对于不需要任何准确计算精度的数字可以直接使用float或double,但是如果需要精确计算的结果,则必须使用BigDecimal类,而且使用BigDecimal类也可以进行大数 ...

  6. Java BigDecimal

    1构造函数(主要测试参数类型为double和String的两个常用构造函数) BigDecimal aDouble =new BigDecimal(1.22); System.out.println( ...

  7. Java BigDecimal详解

    借用<Effactive Java>这本书中的话,float和double类型的主要设计目标是为了科学计算和工程计算.他们执行二进制浮点运算,这是为了在广域数值范围上提供 较为精确的快速近 ...

  8. Java BigDecimal大数字操作

    在java中提供了大数字的操作类,即java.math.BinInteger类和java.math.BigDecimal类.这两个类用于高精度计算,其中BigInteger类是针对大整数的处理类,而B ...

  9. 使用Java BigDecimal进行精确运算

    首先我们先来看如下代码示例: public class Test_1 {     public static void main(String[] args) {         System.out ...

  10. java BigDecimal的操作

    今天给大家讲一下java中BigDecimal的操作.由于double,float的精度不够,因此在进行商业计算的时候要使用的BigDecimal.BigDecimal对象创建如下: BigDecim ...

随机推荐

  1. Delphi用ADOquery主从表例子(转)

    http://blog.csdn.net/kandy_zheng/article/details/1639184 在sql server 的northwide 中建立主表 create table s ...

  2. golang的linux安装

    1.wget https://storage.googleapis.com/golang/go1.6.2.linux-amd64.tar.gz tar -zxvf go1.6.2.linux-amd6 ...

  3. 关于php的socket

    这里仅记录tcp协议: 关于server: <?php /** * 测试关于php的socket函数 */ /** * 最基本的socket,服务器端: * 创建 * $sock = socke ...

  4. [ An Ac a Day ^_^ ] [kuangbin带你飞]专题四 最短路练习 POJ 2387 Til the Cows Come Home

    求1到N的最短路 注意有重边 跑一遍dijkstra就行 /* *********************************************** Author :Sun Yuefeng ...

  5. 使 httpClient 支持中文

    一个有效的方法:重载 PostMethod 的 getRequestCharSet 方法 1: class PostChinese { 2: HttpClient httpClient = new H ...

  6. 网页 HTML表格

    今天,我开始学习了网站开发中HTML的部分内容,主要包括标签和表格. body的属性:bgcolor,background,text,topmargin,bottomargin,leftmargin, ...

  7. windows禅道环境搭建

    zentao官网的几个网址 http://www.zentao.net/ http://www.zentao.net/article-view-79863.html   搭建环境需要下载两个文件 1) ...

  8. 滚动条加粗和panel,gridControl结合用

    private void FrmLotterycs_Load(object sender, EventArgs e) { t = 0; UserJuanquanTB = O.get_UserJuanq ...

  9. 关于C/C++的四舍五入方向

    今天在刷题过程中发现了一个特别奇怪的现象,printf() 的精度控制不是按照4舍5入,而是按照5舍6入, 例如: printf("%.2f\n",0.145) printf(&q ...

  10. 第六百二十六天 how cna I 坚持

    年代数竟然算错了,哎,好笨啊.2000年得有100代人了,好傻啊. 1到100,哎. 早上好像想通了呢,哎.又不打算去拉萨了. 到底..哎.睡觉.