mysql与java金额类型使用

对于金额类型,使用float和double存在损失精度的问题.

mysql中如何使用货币类型:

decimal(P,D);

  • P是表示有效数字数的精度。 P范围为1〜65
  • D是表示小数点后的位数。 D的范围是0~30。MySQL要求D小于或等于(<=)P

使用decimal(6,2)类型,这个意思,你总共可以有10个小数位数,2表示你可以保存小数点后两位;

此时由decimal定义的列最多可以存储6位数字,小数位数为2位; 因此,amount列的范围是从-9999.999999.99

Java中如何使用货币类型:

使用BigDecimal类:

BigDecimal num3 = new BigDecimal( Double.toString( 1.0f ) );
BigDecimal num4 = new BigDecimal( Double.toString( 0.99999999f ) );
System.out.println( num3 == num4 );  // 打印 false

BigDecimal num1 = new BigDecimal( Double.toString( 0.2 ) );
BigDecimal num2 = new BigDecimal( Double.toString( 0.7 ) );

// 加
System.out.println( num1.add( num2 ) );  // 打印:0.9

// 减
System.out.println( num2.subtract( num1 ) );  // 打印:0.5

// 乘
System.out.println( num1.multiply( num2 ) );  // 打印:0.14

// 除
System.out.println( num2.divide( num1 ) );  // 打印:3.5

当我们从mysql中取出Decimal类型的数据得到的是一个String类型的数据,因此可以直接使用下面的方式.

BigDecimal b1 = new BigDecimal("1.34");//1.34  
BigDecimal b2 = BigDecimal.valueOf(1.34);//1.34  

如果直接new的话存在损失精度的问题,如下:

BigDecimal one1 = new BigDecimal(1.34);//1.3400000000000000799360577730112709105014801025390625 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值