Java中的大树处理

来源:互联网 发布:it培训机构知乎 编辑:程序博客网 时间:2024/05/01 07:57
在javaAPI中有两个大数类:java.math.BigInteger类和java.math.BigDecimal类。
         java.math.BigInteger类:不可变的任意精度的整数。所有操作中,都以二进制补码形式表示。BigInteger 提供所有 Java 的基本整数操作符的对应物,并提供 java.lang.Math 的所有相关方法。另外,BigInteger 还提供以下运算:模算术、GCD 计算、质数测试、素数生成、位操作以及一些其他操作。
代码实现:
import java.math.BigInteger;public class BigIntegerDemo {public static void main(String[] args) {BigInteger s=BigInteger.valueOf(1); //返回其值等于指定 long 的值的 BigIntegerint n=50;//求50的阶乘for(int i=1;i<=n;i++){s=s.multiply(BigInteger.valueOf(i)); //返回其值为(BigInteger.valueOf(i)) 的 BigInteger}System.out.println(s);}}
       java.math.BigDecimal类:不可变的、任意精度的有符号十进制数。 BigDecimal由任意精度的整数非标度值和32位的整数标度(scale: 以10为底的指数)。BigDecimal 类提供以下操作:算术、标度操作、舍入、比较、哈希算法和格式转换。toString( )方法提供 BigDecimal 的规范表示形式。
代码实现:
 
import java.math.BigDecimal;public class BigDecimalDemo {public static void main(String[] args) {//如果工程中碰到可能会丢失精度的运算,最好采用BigDecimal来进行//下面先演示不使用BigDecimal的高精度运算double sum=0;for(int i=0;i<10;i++){sum+=0.1;}System.out.println("sum="+sum); //下面演示使用BigDecimal来进行高精度运算BigDecimal d=new BigDecimal(0);for(int i=0;i<10;i++){d=d.add(new BigDecimal(0.1));}System.out.println("d="+d.doubleValue());double dd=13.5654654645D;BigDecimal b=new BigDecimal(dd);b=b.divide(new BigDecimal(1.2),2,BigDecimal.ROUND_DOWN);  //返回一个 BigDecimal,其值为 (this / divisor),其标度为指定标度System.out.println("b+"+b.doubleValue());}}


1 0
原创粉丝点击