例24:浮動小数点数をより正確に使用

1647 ワード

商品金額の計算では、小数演算に関わることが多い.例えば、ある商品の価格は1.10元で、顧客の既存金額は2元です.コンピュータ内のすべての数値はバイナリで格納されますが、バイナリはすべての小数を正確に表すことができません.したがって、基本データ型を使用した小数演算にはいくつかの誤差があります.この例では、BigDecimalクラスで正確な小数演算を実現します.
BigDecimalクラスでよく使用されるメソッド:
1、加算
この方法は2つのBigDecimalクラスインスタンスオブジェクトの加算を実現し,演算結果を方法の戻り値とする.
書式:public BigDecimal add(BigDecimal augend)
augend:現在のオブジェクトと加算されるオペランド
 
2、減算
この方法は2つのBigDecimalクラスインスタンスオブジェクトの減算を実現し,演算結果をメソッドの戻り値とする.
書式:public BigDecimal subtract(BigDecimal subtrahend)
subtrahend:現在のオブジェクトと減算するオペランド
 
3、乗算
この方法は2つのBigDecimalクラスインスタンスオブジェクトの乗算を実現し,演算結果を方法の戻り値とする.
書式:public BigDecimal multiply(BigDecimal multiplicand)
Multiplicand:乗算中の乗数
 
4、除算
この方法は2つのBigDecimalクラスインスタンスオブジェクトの除算演算を実現し,演算結果をメソッドの戻り値とする.
書式:public BigDecimal divide(BigDecimal divisor)
divisor:除算演算における除算
 
package com.example;

import java.math.BigDecimal;

public class AccuratelyFloat {

	/**
	 *         
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		double money=2;	//    
		double price=1.1;//    
		double result=money-price;//             
		System.out.println("        :"+result);//        :0.8999999999999999
		
		//  BigDecimal     
		BigDecimal money1=new BigDecimal("2");
		BigDecimal price1=new BigDecimal("1.1");
		BigDecimal result1=money1.subtract(price1);
		System.out.println("       :"+result1);//       :0.9
		
	}

}