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. 浙江大学 pat 1006题解

    1006. Sign In and Sign Out (25) 时间限制 400 ms 内存限制 32000 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue ...

  2. git 恢复丢失的文件-- 不提交入口文件

    务必进入当前controller下面,才能恢复 git checkout HEAD TestController.class.php 01备份index.php文件 02使用 小乌龟的git 删除 t ...

  3. Tyvj-TOM的无穷序列

    背景 蛟川书院模拟试题 描述 TOM有一个无穷序列中如下:110100100010000100000.....请你帮助TOM找出在这个无穷序列中指定位置上的数字 输入格式 第一行一个正整数N,表示询问 ...

  4. 实验六 多线程编程 1.随便选择两个城市作为预选旅游目标。实现两个独立的线程分别显示10次城市名,每次显示后休眠一段随机时间(1000ms以内),哪个先显示完毕,就决定去哪个城市。分别用Runnable接口和Thread类实现。

    //继承Thread类 package zuoye; //继承Thread类 public class City extends Thread{ private String name; public ...

  5. C++内存申请容易产生的错误

    1.起因 前两天用python写了一款工具用来把excel文件转换成json文件,今天给他们用的时候发现在文本下看正常,但是在程序中使用就是会多出一些莫名其妙的字符. 2. 调查 原来主要是我写的工具 ...

  6. python初识1

    作者:武沛齐 出处:http://www.cnblogs.com/wupeiqi/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接. 安装Pyt ...

  7. javaWEB总结(2): load-on-startup节点

    在javaWEB总结(1)里面,我们创建了一个servlet以及它的映射,当我们访问那个映射地址的时候,就可以访问servlet,并且servlet容器调用了生命周期方法,销毁前调用destroy方法 ...

  8. HDU 3338 Kakuro Extension

    网络最大流 TLE了两天的题目.80次Submit才AC,发现是刘汝佳白书的Dinic代码还可以优化.....瞬间无语..... #include<cstdio> #include< ...

  9. POJ 2246 Matrix Chain Multiplication

    用栈来处理一下就好了. #include<iostream> #include<algorithm> #include<cstdio> #include<cs ...

  10. NGUI实现一个背包功能

    界面布局是这样的,一个400*400的背景,然后在其上是16张小图片,每个小图片格子可以用来放置拾取的物品.有两个预制体,一个是可放置的小格子,一个是拾取的物品(包含一个此物品有多少的Label). ...