Java で $123.45 などというようにドル建ての金額などを扱う場合は固定小数点のデータ構造が必要になる。 そのような場合は java.math.BigDecimal を使えばよさそう。
BigDecimal はスケールなし整数値 (unscaledValue) と、小数点第何位までかを示す scale の整数であらわされる。 例えば 123.45 ならば unscaledValue = 12345, scale = 2 となる。
以下、テストコードとその実行結果をメモメモ
コード
package test; import java.math.*; public class BigIntegerTest { public static void main(String[] args) { BigDecimal num = new BigDecimal("2.35"); printBigDecimalStructure(num); BigDecimal num2 = num.setScale(1, BigDecimal.ROUND_DOWN); printBigDecimalStructure(num2); BigDecimal num3 = num.setScale(0, BigDecimal.ROUND_DOWN); printBigDecimalStructure(num3); BigDecimal num4 = num.setScale(10, BigDecimal.ROUND_DOWN); printBigDecimalStructure(num4); } static void printBigDecimalStructure(BigDecimal bd) { System.out.println("<" + bd + ">"); System.out.println("unscaledValue: " + bd.unscaledValue()); System.out.println("scale:" + bd.scale()); System.out.println(); } }
実行結果
<2.35> unscaledValue: 235 scale:2 <2.3> unscaledValue: 23 scale:1 <2> unscaledValue: 2 scale:0 <2.3500000000> unscaledValue: 23500000000 scale:10