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
  • 相关阅读:
    java中清空session
    freemarker中修改和添加功能中包含checkbox复选框默认选中需求的解决方式
    Highcharts动态赋值学习
    CSDN Luncher
    JS导入导出Excel表格的方法
    js 下载文件的操作方法
    模板标签的作用
    css3的calc()
    JS滚轮mousewheel事件和DOMMouseScroll事件
    css BFC(格式化上下文)的理解
  • 原文地址:https://www.cnblogs.com/celine/p/8306359.html
Copyright © 2011-2022 走看看