zoukankan      html  css  js  c++  java
  • 处理大数据

      1 package com.jdk7.chapter3;
      2 
      3 import java.math.BigDecimal;
      4 
      5 public class HandleBigDecimal {
      6     public static double add(double a1, double a2){
      7         //声明BigDecimal对象进行数学计算时,参数使用String会比较准确
      8         BigDecimal a = new BigDecimal(Double.valueOf(a1).toString());
      9         BigDecimal b = new BigDecimal(Double.valueOf(a2).toString());
     10         System.out.println(a+"+"+b+" = "+a.add(b));
     11         return a.add(b).doubleValue();
     12     }
     13     
     14     public static double sub(double s1,double s2){
     15         BigDecimal a = new BigDecimal(Double.valueOf(s1).toString());
     16         BigDecimal b = new BigDecimal(Double.valueOf(s2).toString());
     17         System.out.println(a+"-"+b+" = "+a.subtract(b));
     18         return a.subtract(b).doubleValue();
     19     }
     20     
     21     public static double multiply(double m1, double m2){
     22         BigDecimal a = new BigDecimal(Double.valueOf(m1).toString());
     23         BigDecimal b = new BigDecimal(Double.valueOf(m2).toString());
     24         System.out.println(a+"*"+b+" = "+a.multiply(b));
     25         return a.multiply(b).doubleValue();
     26     }
     27     
     28     public static double div(double d1, double d2){
     29         return div(d1, d2, 4);
     30     }
     31     
     32     public static double div(double v1, double v2, int scale){
     33         if(scale<0){
     34             System.err.println("精度不能小于0");
     35             return 0;
     36         }else{
     37             BigDecimal a = new BigDecimal(Double.valueOf(v1).toString());
     38             BigDecimal b = new BigDecimal(Double.valueOf(v2).toString());
     39             System.out.println(a+"/"+b+" = "+a.divide(b, scale));
     40             return a.divide(b, scale).doubleValue();
     41         }
     42     }
     43     
     44     /**
     45      * 计算整数阶乘,当整数超过17时,阶乘超出long的范围,此时阶乘结果要用BigDecimal类型保存
     46      * @return
     47      */
     48     public static BigDecimal getFactorial(int n){
     49         if(n<0){
     50             System.out.println((new BigDecimal("-1")).toString());
     51             return new BigDecimal("-1");
     52         }else if(n==0){
     53             System.out.println((new BigDecimal("0")).toString());
     54             return new BigDecimal("0");
     55         }else{
     56             BigDecimal result = new BigDecimal("1");
     57             for(;n>0;n--){
     58                 result = result.multiply(new BigDecimal(Integer.valueOf(n).toString()));
     59             }
     60             System.out.println(result.toString());
     61             return result;
     62         }
     63     }
     64     public static void main(String[] args) {
     65         add(0.01,0.05);
     66         sub(1.0,0.42);
     67         multiply(4.015,100);
     68         div(123.3,100);
     69         div(123.3,100,4);
     70 //        div(123.3,100,-1);
     71         getFactorial(-1);
     72         getFactorial(0);
     73         getFactorial(30);
     74         
     75         BigDecimal a = new BigDecimal(0.1);        //double类型的构造函数
     76         BigDecimal b = new BigDecimal("0.1");    //String类型的构造函数
     77         BigDecimal c = new BigDecimal("0.10");    //String类型的构造函数
     78         System.out.println("a = "+a.toString());
     79         System.out.println("b = "+b.toString());
     80         System.out.println("c = "+c.toString());
     81         System.out.println("a.equals(b) = "+a.equals(b));        //进行字符串的比较
     82         System.out.println("a.compareTo(b) = "+a.compareTo(b));    //进行数值的比较,a是double构造对象,大于b
     83         System.out.println("b.compareTo(c) = "+b.compareTo(c));
     84         
     85     }
     86 }
     87 
     88 处理结果:
     89 0.01+0.05 = 0.06
     90 1.0-0.42 = 0.58
     91 4.015*100.0 = 401.5000
     92 123.3/100.0 = 1.2
     93 123.3/100.0 = 1.2
     94 -1
     95 0
     96 265252859812191058636308480000000
     97 a = 0.1000000000000000055511151231257827021181583404541015625
     98 b = 0.1
     99 c = 0.10
    100 a.equals(b) = false
    101 a.compareTo(b) = 1
    102 b.compareTo(c) = 0
  • 相关阅读:
    点击listview 的列头对其item进行自动排序
    将选择的图片显示在listview中,并显示filename,path和type
    【翻译】8 个可以节省时间的 C# 开发相关工具
    【原创】关于乘法运算的新思路
    【翻译】为什么我们要用抽象类?
    【翻译】如何使用 C# 的 BackgroundWorker
    【汉化】DevExpress插件中RichEdit控件的自定义汉化方法
    关于C#日期格式化问题
    C#获取(大陆)身份证基本信息的算法
    C#关于精确年龄的算法(精确到天)
  • 原文地址:https://www.cnblogs.com/celine/p/8306359.html
Copyright © 2011-2022 走看看