精確小数演算の処理

2276 ワード

精確小数演算の処理

package yfTest.shixi;

import java.math.BigDecimal; 
import java.text.DecimalFormat;

import org.junit.Test;

public class BigDecimalTest { 

/** 
  * @param args 
  */ 
	@Test
	public void bigDecimalTest() { 
	  float a = 1.10540001f; 
	  float b = 2.2f; 
	  BigDecimalTest t = new BigDecimalTest(); 
	  System.out.println(t.add(a,b)); 
	  System.out.println(t.sub(a,b)); 
	  System.out.println(t.mul(a,b)); 
	  System.out.println(t.div(a,b)); 
	  System.out.println(t.round(a)); //1.11
	  
	  // (4 )
	  DecimalFormat dcmFmt = new DecimalFormat("0.00");
	  double db = 12333.007;
	  System.out.println(dcmFmt.format(db));//12333.01
	
	} 
public float add(float v1,float v2){//  
   BigDecimal b1 = new BigDecimal(Float.toString(v1)); 
   BigDecimal b2 = new BigDecimal(Float.toString(v2)); 
   return b1.add(b2).floatValue(); 
  } 

  public float sub(float v1,float v2){//  
   BigDecimal b1 = new BigDecimal(Float.toString(v1)); 
   BigDecimal b2 = new BigDecimal(Float.toString(v2)); 
   return b1.subtract(b2).floatValue(); 
  } 

  public float mul(float v1,float v2){//  
   BigDecimal b1 = new BigDecimal(Float.toString(v1)); 
   BigDecimal b2 = new BigDecimal(Float.toString(v2)); 
   return b1.multiply(b2).floatValue(); 
  } 

  public float div(float v1,float v2){//  
   BigDecimal b1 = new BigDecimal(Float.toString(v1)); 
   BigDecimal b2 = new BigDecimal(Float.toString(v2)); 
   return b1.divide(b2,3,BigDecimal.ROUND_HALF_UP).floatValue(); 
  } 

  public float round(float v){// 2  
   BigDecimal b = new BigDecimal(Float.toString(v)); 
   BigDecimal one = new BigDecimal("1"); 
   return b.divide(one,2,BigDecimal.ROUND_HALF_UP).floatValue(); 
  } 
  
  // reflect  !( )
    public static void main(String args[]) {
      new BigDecimalTest().doit();
    }
    public void doit() {
      System.out.println(new Exception().getStackTrace()[0]);
    }
}