例子1,string 转BigDecimal

    1. public class Test{
    2. public static void main(String[] arg) {
    3. String str1="2.30";
    4. BigDecimal bd=new BigDecimal(str1);
    5. System.out.println(bd);
    6. }
    7. }

    例子2,BigDecimal和String的相互转换

    1. /*由数字字符串构造BigDecimal的方法
    2. *设置BigDecimal的小数位数的方法
    3. */
    4. import java.math.BigDecimal;
    5. //数字字符串
    6. String StrBd="1048576.1024";
    7. //构造以字符串内容为值的BigDecimal类型的变量bd
    8. BigDecimal bd=new BigDecimal(StrBd);
    9. //设置小数位数,第一个变量是小数位数,第二个变量是取舍方法(四舍五入)
    10. bd=bd.setScale(2, BigDecimal.ROUND_HALF_UP);
    11. //转化为字符串输出
    12. String OutString=bd.toString();

    补充:原 Integer转BigDecimal

    1. new BigDecimal(Integer.parseInt(findCcid.toString()))

    Object转BigDecimal类型:

    1. public static BigDecimal getBigDecimal(Object value) {
    2. BigDecimal ret = null;
    3. if (value != null) {
    4. if (value instanceof BigDecimal) {
    5. ret = (BigDecimal) value;
    6. } else if (value instanceof String) {
    7. ret = new BigDecimal((String) value);
    8. } else if (value instanceof BigInteger) {
    9. ret = new BigDecimal((BigInteger) value);
    10. } else if (value instanceof Number) {
    11. ret = new BigDecimal(((Number) value).doubleValue());
    12. } else {
    13. throw new ClassCastException("Not possible to coerce [" + value + "] from class " + value.getClass() + " into a BigDecimal.");
    14. }
    15. }
    16. return ret;
    17. }

    double转BigDecimal类型:
    一定要先转换为string,否则会丢失精度,出现无限近似值

    1. double d = 20.1;
    2. BigDecimal big = new BigDecimal(String.valueOf(d))