NumberFormat类:(public abstract class NumberFormat extends Format)
  用java.text.NumberFormat类对输出的数字结果进行必要的格式化。
  使用该类如下方法类实例化一个NumberFormat对象:
   public static final NumberFormat getInstance()
  然后用该对象调用如下方法可以格式化数字number(返回字符串对象):
   public final String format(double number)
  NumberFormat类有如下常用方法:
  public void setMaximumFractionDigits(int newValue)//设置数的小数部分所允许的最大位数。
  public void setMaximumIntegerDigits(int newValue)//设置数的整数部分所允许的最大位数。
  public void setMinimumFractionDigits(int newValue)//设置数的小数部分所允许的最小位数。
  public void setMinimumIntegerDigits(int newValue)//设置数的整数部分所允许的最小位数。
  (更多方法及用法看JDK6API参考。)
Java提供了两个用于高精度计算的类:BigInteger和BigDecimal。虽然它们大体上属于“包装器类”的范畴,但两者都没有对应的基本类型。不过,这两个类包含的方法,提供的操作与对基本类型所能执行的操作相似。也就是说,能作用于int或float的操作,也同样能作用于BigInteger或BigDecimal。只不过必须以方法调用方式取代运算符方式来实现。由于这么做复杂了许多,所以运算速度会比较慢,相比而言,int和float是以速度取代了精度。
BigInteger支持任意精度的整数。也就是说,在运算中,可以准确地表示任何大小的整数值,而不会丢失任何信息。
常用方法:
   abs()  //返回其值是此BigInteger的绝对值的BigInteger。
   add(BigInteger val)  //返回其值为(this+val)的BigInteger。
   subtract(BigInteger val)  //返回其值为(this-val)的BigInteger。
   multiply(BigInteger val)  // 返回其值为(this*val)的BigInteger。
   divide(BigInteger val)  //返回其值为(this/val)的BigInteger。
   remainder(BigInteger val)  //返回其值为(this%val)的BigInteger。
   compareTo(BigInteger val)  //将此BigInteger与指定的BigInteger进行比较。返回值1、0、-1分别表示大于、等于、小于
   pow(int exponent)  //返回当前大数的exponent次幂。
   toString()  //返回此BigInteger的十进制字符串表示形式。
   toString(int radix)  //返回此BigInteger的给定基数(radix进制)的字符串表示形式。
1.BigInteger(大整数):
BigInteger bi1=new BigInteger("1234567890123456890");
BigInteger bi2=BigInteger.valueOf(123L);
bi1=bi1.add(bi2);//b1+b2
bi1=bi1.multiply(bi2);//b1*b2
bi1=bi1.subtract(bi2);//b1-b2
bi1=bi1.divide(bi2);// b1/b2
BigDecimal支持任何精度的定点数,例如,可以用它进行精确的货币运算。
2.BigDecimal(大浮点数):
BigDecimal bd = new BigDecimal("3.1415926");
bd = bd.setScale(2,BigDecimal.ROUND_DOWN);//取3.1415926小数点后面二位
附:对BigDecimal常用方法的归类
 import java.math.BigDecimal;
import java.math.BigDecimal; 


 public class Arith
public class Arith  {
{ 


 /** *//**
/** *//** 
 * 由于Java的简单类型不能够精确的对浮点数进行运算,这个工具类提供精
* 由于Java的简单类型不能够精确的对浮点数进行运算,这个工具类提供精 
 * 确的浮点数运算,包括加减乘除和四舍五入。
* 确的浮点数运算,包括加减乘除和四舍五入。 
 */
*/ 
 //默认除法运算精度
//默认除法运算精度 
 private static final int DEF_DIV_SCALE = 10;
private static final int DEF_DIV_SCALE = 10; 
 
    
 //这个类不能实例化
//这个类不能实例化 

 private Arith()
private Arith() {
{ 
 }
} 


 /** *//**
    /** *//** 
 * 提供精确的加法运算。
     * 提供精确的加法运算。 
 * @param v1 被加数
     * @param v1 被加数 
 * @param v2 加数
     * @param v2 加数 
 * @return 两个参数的和
     * @return 两个参数的和 
 */
     */ 

 public static double add(double v1,double v2)
    public static double add(double v1,double v2) {
{ 
 BigDecimal b1 = new BigDecimal(Double.toString(v1));
        BigDecimal b1 = new BigDecimal(Double.toString(v1)); 
 BigDecimal b2 = new BigDecimal(Double.toString(v2));
        BigDecimal b2 = new BigDecimal(Double.toString(v2)); 
 return b1.add(b2).doubleValue();
        return b1.add(b2).doubleValue(); 
 }
    } 

 /** *//**
    /** *//** 
 * 提供精确的减法运算。
     * 提供精确的减法运算。 
 * @param v1 被减数
     * @param v1 被减数 
 * @param v2 减数
     * @param v2 减数 
 * @return 两个参数的差
     * @return 两个参数的差 
 */
     */ 

 public static double sub(double v1,double v2)
    public static double sub(double v1,double v2) {
{ 
 BigDecimal b1 = new BigDecimal(Double.toString(v1));
        BigDecimal b1 = new BigDecimal(Double.toString(v1)); 
 BigDecimal b2 = new BigDecimal(Double.toString(v2));
        BigDecimal b2 = new BigDecimal(Double.toString(v2)); 
 return b1.subtract(b2).doubleValue();
        return b1.subtract(b2).doubleValue(); 
 }
    } 

 /** *//**
    /** *//** 
 * 提供精确的乘法运算。
     * 提供精确的乘法运算。 
 * @param v1 被乘数
     * @param v1 被乘数 
 * @param v2 乘数
     * @param v2 乘数 
 * @return 两个参数的积
     * @return 两个参数的积 
 */
     */ 

 public static double mul(double v1,double v2)
    public static double mul(double v1,double v2) {
{ 
 BigDecimal b1 = new BigDecimal(Double.toString(v1));
        BigDecimal b1 = new BigDecimal(Double.toString(v1)); 
 BigDecimal b2 = new BigDecimal(Double.toString(v2));
        BigDecimal b2 = new BigDecimal(Double.toString(v2)); 
 return b1.multiply(b2).doubleValue();
        return b1.multiply(b2).doubleValue(); 
 }
    } 


 /** *//**
    /** *//** 
 * 提供(相对)精确的除法运算,当发生除不尽的情况时,精确到
     * 提供(相对)精确的除法运算,当发生除不尽的情况时,精确到 
 * 小数点以后10位,以后的数字四舍五入。
     * 小数点以后10位,以后的数字四舍五入。 
 * @param v1 被除数
     * @param v1 被除数 
 * @param v2 除数
     * @param v2 除数 
 * @return 两个参数的商
     * @return 两个参数的商 
 */
     */ 

 public static double div(double v1,double v2)
    public static double div(double v1,double v2) {
{ 
 return div(v1,v2,DEF_DIV_SCALE);
        return div(v1,v2,DEF_DIV_SCALE); 
 }
    } 


 /** *//**
    /** *//** 
 * 提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指
     * 提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指 
 * 定精度,以后的数字四舍五入。
     * 定精度,以后的数字四舍五入。 
 * @param v1 被除数
     * @param v1 被除数 
 * @param v2 除数
     * @param v2 除数 
 * @param scale 表示表示需要精确到小数点以后几位。
     * @param scale 表示表示需要精确到小数点以后几位。 
 * @return 两个参数的商
     * @return 两个参数的商 
 */
     */ 

 public static double div(double v1,double v2,int scale)
    public static double div(double v1,double v2,int scale) {
{ 

 if(scale<0)
        if(scale<0) {
{ 
 throw new IllegalArgumentException(
            throw new IllegalArgumentException( 
 "The scale must be a positive integer or zero");
                "The scale must be a positive integer or zero"); 
 }
        } 
 BigDecimal b1 = new BigDecimal(Double.toString(v1));
        BigDecimal b1 = new BigDecimal(Double.toString(v1)); 
 BigDecimal b2 = new BigDecimal(Double.toString(v2));
        BigDecimal b2 = new BigDecimal(Double.toString(v2)); 
 return b1.divide(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue();
        return b1.divide(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue(); 
 }
    } 


 /** *//**
    /** *//** 
 * 提供精确的小数位四舍五入处理。
     * 提供精确的小数位四舍五入处理。 
 * @param v 需要四舍五入的数字
     * @param v 需要四舍五入的数字 
 * @param scale 小数点后保留几位
     * @param scale 小数点后保留几位 
 * @return 四舍五入后的结果
     * @return 四舍五入后的结果 
 */
     */ 

 public static double round(double v,int scale)
    public static double round(double v,int scale) {
{ 

 if(scale<0)
        if(scale<0) {
{ 
 throw new IllegalArgumentException(
            throw new IllegalArgumentException( 
 "The scale must be a positive integer or zero");
                "The scale must be a positive integer or zero"); 
 }
        } 
 BigDecimal b = new BigDecimal(Double.toString(v));
        BigDecimal b = new BigDecimal(Double.toString(v)); 
 BigDecimal one = new BigDecimal("1");
        BigDecimal one = new BigDecimal("1"); 
 return b.divide(one,scale,BigDecimal.ROUND_HALF_UP).doubleValue();
        return b.divide(one,scale,BigDecimal.ROUND_HALF_UP).doubleValue(); 
 }
    } 
 
    

 /** *//**
   /** *//** 
 * 提供精确的类型转换(Float)
    * 提供精确的类型转换(Float) 
 * @param v 需要被转换的数字
    * @param v 需要被转换的数字 
 * @return 返回转换结果
    * @return 返回转换结果 
 */
    */ 

 public static float convertsToFloat(double v)
    public static float convertsToFloat(double v) {
{ 
 BigDecimal b = new BigDecimal(v);
    BigDecimal b = new BigDecimal(v); 
 return b.floatValue();
    return b.floatValue(); 
 }
    } 
 
    

 /** *//**
    /** *//** 
 * 提供精确的类型转换(Int)不进行四舍五入
* 提供精确的类型转换(Int)不进行四舍五入 
 * @param v 需要被转换的数字
* @param v 需要被转换的数字 
 * @return 返回转换结果
* @return 返回转换结果 
 */
*/ 

 public static int convertsToInt(double v)
public static int convertsToInt(double v) {
{ 
 BigDecimal b = new BigDecimal(v);
BigDecimal b = new BigDecimal(v); 
 return b.intValue();
    return b.intValue(); 
 }
} 


 /** *//**
/** *//** 
 * 提供精确的类型转换(Long)
* 提供精确的类型转换(Long) 
 * @param v 需要被转换的数字
* @param v 需要被转换的数字 
 * @return 返回转换结果
* @return 返回转换结果 
 */
*/ 

 public static long convertsToLong(double v)
public static long convertsToLong(double v) {
{ 
 BigDecimal b = new BigDecimal(v);
BigDecimal b = new BigDecimal(v); 
 return b.longValue();
    return b.longValue(); 
 }
} 


 /** *//**
/** *//** 
 * 返回两个数中大的一个值
* 返回两个数中大的一个值 
 * @param v1 需要被对比的第一个数
* @param v1 需要被对比的第一个数 
 * @param v2 需要被对比的第二个数
* @param v2 需要被对比的第二个数 
 * @return 返回两个数中大的一个值
* @return 返回两个数中大的一个值 
 */
*/ 

 public static double returnMax(double v1,double v2)
public static double returnMax(double v1,double v2) {
{ 
 BigDecimal b1 = new BigDecimal(v1);
BigDecimal b1 = new BigDecimal(v1); 
 BigDecimal b2 = new BigDecimal(v2);
BigDecimal b2 = new BigDecimal(v2); 
 return b1.max(b2).doubleValue();
    return b1.max(b2).doubleValue(); 
 }
} 


 /** *//**
/** *//** 
 * 返回两个数中小的一个值
* 返回两个数中小的一个值 
 * @param v1 需要被对比的第一个数
* @param v1 需要被对比的第一个数 
 * @param v2 需要被对比的第二个数
* @param v2 需要被对比的第二个数 
 * @return 返回两个数中小的一个值
* @return 返回两个数中小的一个值 
 */
*/ 

 public static double returnMin(double v1,double v2)
public static double returnMin(double v1,double v2) {
{ 
 BigDecimal b1 = new BigDecimal(v1);
BigDecimal b1 = new BigDecimal(v1); 
 BigDecimal b2 = new BigDecimal(v2);
BigDecimal b2 = new BigDecimal(v2); 
 return b1.min(b2).doubleValue();
    return b1.min(b2).doubleValue(); 
 }
} 


 /** *//**
/** *//** 
 * 精确对比两个数字
* 精确对比两个数字 
 * @param v1 需要被对比的第一个数
* @param v1 需要被对比的第一个数 
 * @param v2 需要被对比的第二个数
* @param v2 需要被对比的第二个数 
 * @return 如果两个数一样则返回0,如果第一个数比第二个数大则返回1,反之返回-1
* @return 如果两个数一样则返回0,如果第一个数比第二个数大则返回1,反之返回-1 
 */
*/ 

 public static int compareTo(double v1,double v2)
public static int compareTo(double v1,double v2) {
{ 
 BigDecimal b1 = new BigDecimal(v1);
BigDecimal b1 = new BigDecimal(v1); 
 BigDecimal b2 = new BigDecimal(v2);
BigDecimal b2 = new BigDecimal(v2); 
 return b1.compareTo(b2);
    return b1.compareTo(b2); 
 }
}
 }
} 
Math类:
  java.lang.Math类中包含基本的数字操作,如指数、对数、平方根和三角函数。
  java.math是一个包,提供用于执行任意精度整数(BigInteger)算法和任意精度小数(BigDecimal)算法的类java.lang.Math类中包含E和PI两个静态常量,以及进行科学计算的类(static)方法,可以直接通过类名调用。
  public static final Double E = 2.7182818284590452354 
  public static final Double PI = 3.14159265358979323846
  public static long abs(double x):传回 x 的绝对值。X也可int long float
  public static long sin(double x): 传回x径度的正弦函数值  
  public static long cos(double x):传回x径度的余弦函数值   
  public static long tan(double x): 传回x径度的正切函数值 
  public static long asin(double x):传回x值的反正弦函数值。
  public static long acos(double x):传回x值的反余弦函数值。
  public static long atan(double x):传回x值的反正切函数值。 
  public static long atan2(double x, double y):传回极坐标(polar)的θ值 
  public static long floor(double x):传回不大于x的最大整数值 
  public static long ceil(double x):传回不小于x的最小整数值。 
  public static long exp(double x):传回相当于ex值 
  public static long log(double x):传回x的自然对数函数值 
  public static long max(double x,double y):传回x、y较大数 
  public static long min(double x,double y):传回x、y较小数 
  public static long pow(double x,double y):传回x的y次幂值 
  public static long sqrt(double x): 传回x开平方值 
  public static long rint(double x):传回最接近x的整数值 
  public static long round(double x):传回x的四舍五入值 
  public static long toDegrees(double angrad):传回将angrad径度转换成角度 
  public static long toRadians(double angdeg): 传回将angdeg角度转换成径度
  public static long random():传回随机数值,产生一个0-1之间的随机数(不包括0和1)
	posted on 2009-09-05 10:14 
飞翔天使 阅读(5178) 
评论(0)  编辑  收藏  所属分类: 
java