package com.guozz.bigdecimalTest;
import java.math.BigDecimal;
public class BigDecimalTest {
public static void main(String[] args) {
BigDecimal bigNumber=new BigDecimal("89.1234567890123456789");
BigDecimal bigRate = new BigDecimal(1000);
BigDecimal bigResult = new BigDecimal(0.0);
//对bigNumber的值乘以1000,结果 赋予bigResult
bigResult = bigNumber.multiply(bigRate);
System.out.println(bigResult.toString());
/*以双精度数返回bigNumber中的值
注意使用方法doublue()将对象bigNumber中的值以双精度数值返回时,将丢失数据的准确性。
使用其他方法,如xxxValue()时均存在这个问题,使用时必须慎重。*/
double dData = bigNumber.doubleValue();
System.out.println(dData);
/***********************格式化**************************/
/**
* 由于NumberFormat类的format()方法可以使用BigDecimal对象作为其参数,
* 可以利用BigDecimal对超出16位有效数字的货币值,百分值,以及一般数值进行格式化控制。
*/
double i = 3.856;
/**
* 舍掉小数取整
*/
System.out.println("舍掉小数取整:Math.floor(3.856)=" + (int)Math.floor(i));
/**
* 四舍五入取整
*/
System.out.println("四舍五入取整:(3.856)=" + new BigDecimal(i).setScale(0, BigDecimal.ROUND_HALF_UP) );
/**
* 四舍五入保留两位小数
*/
System.out.println("四舍五入取整:(3.856)="
+ new BigDecimal(i).setScale(2, BigDecimal.ROUND_HALF_UP));
/**
* 凑整,取上限
*/
System.out.println("凑整:Math.ceil(3.856)=" + (int) Math.ceil(i));
/**
* 舍掉小数取整
*/
System.out.println("舍掉小数取整:Math.floor(-3.856)=" + (int) Math.floor(-i));
/**
* 四舍五入取整
*/
System.out.println("四舍五入取整:(-3.856)="
+ new BigDecimal(-i).setScale(0, BigDecimal.ROUND_HALF_UP));
/**
* 四舍五入保留两位小数
*/
System.out.println("四舍五入取整:(-3.856)="
+ new BigDecimal(-i).setScale(2, BigDecimal.ROUND_HALF_UP));
/**
* 凑整,取上限
*/
System.out.println("凑整(-3.856)=" + (int) Math.ceil(-i));
}
}
import java.math.BigDecimal;
public class BigDecimalTest {
public static void main(String[] args) {
BigDecimal bigNumber=new BigDecimal("89.1234567890123456789");
BigDecimal bigRate = new BigDecimal(1000);
BigDecimal bigResult = new BigDecimal(0.0);
//对bigNumber的值乘以1000,结果 赋予bigResult
bigResult = bigNumber.multiply(bigRate);
System.out.println(bigResult.toString());
/*以双精度数返回bigNumber中的值
注意使用方法doublue()将对象bigNumber中的值以双精度数值返回时,将丢失数据的准确性。
使用其他方法,如xxxValue()时均存在这个问题,使用时必须慎重。*/
double dData = bigNumber.doubleValue();
System.out.println(dData);
/***********************格式化**************************/
/**
* 由于NumberFormat类的format()方法可以使用BigDecimal对象作为其参数,
* 可以利用BigDecimal对超出16位有效数字的货币值,百分值,以及一般数值进行格式化控制。
*/
double i = 3.856;
/**
* 舍掉小数取整
*/
System.out.println("舍掉小数取整:Math.floor(3.856)=" + (int)Math.floor(i));
/**
* 四舍五入取整
*/
System.out.println("四舍五入取整:(3.856)=" + new BigDecimal(i).setScale(0, BigDecimal.ROUND_HALF_UP) );
/**
* 四舍五入保留两位小数
*/
System.out.println("四舍五入取整:(3.856)="
+ new BigDecimal(i).setScale(2, BigDecimal.ROUND_HALF_UP));
/**
* 凑整,取上限
*/
System.out.println("凑整:Math.ceil(3.856)=" + (int) Math.ceil(i));
/**
* 舍掉小数取整
*/
System.out.println("舍掉小数取整:Math.floor(-3.856)=" + (int) Math.floor(-i));
/**
* 四舍五入取整
*/
System.out.println("四舍五入取整:(-3.856)="
+ new BigDecimal(-i).setScale(0, BigDecimal.ROUND_HALF_UP));
/**
* 四舍五入保留两位小数
*/
System.out.println("四舍五入取整:(-3.856)="
+ new BigDecimal(-i).setScale(2, BigDecimal.ROUND_HALF_UP));
/**
* 凑整,取上限
*/
System.out.println("凑整(-3.856)=" + (int) Math.ceil(-i));
}
}