Java中金钱的存储方式,BigDecimal 与 mysql的

2021-09-30  本文已影响0人  王小手无限超神

BigDecimal 与 mysql的decimal

double和float类型存储数字可能导致 精度丢失,而BigDecimal则不会有精度损失问题。创建BigDecimal对象,注意不要直接传入一个double类型的数,因为这样有可能出现误差,结果是不确定的。

BigDecimal BigDecimal(double d); //废弃,精度不能保证
BigDecimal BigDecimal(String s); //常用,推荐使用
static BigDecimal valueOf(double d); //常用,推荐使用
BigDecimal("0.1")
BigDecimal(0.1)
BigDecimal.valueOf(0.1)
第一个和第三个直接等于0.1 而第二个则只是近似于0.1
add(BigDecimal)
BigDecimal对象中的值相加,然后返回这个对象


subtract(BigDecimal)
BigDecimal对象中的值相减,然后返回这个对象


multiply(BigDecimal)
BigDecimal对象中的值相乘,然后返回这个对象


divide(BigDecimal)
BigDecimal对象中的值相除,然后返回这个对象

public BigDecimal divide(BigDecimal divisor, int scale, RoundingMode roundingMode) 
设置小数的处理方式和返回小数位数

Mysql 与BigDecimal
通常,任何MySQL数据类型都可以转换为 java.lang.String,并且任何数字类型都可以转换为任何Java数字类型,但可能会出现舍入,溢出或精度损失。

Mysql数据库的decimal类型 对应Java类型为 java.math.BigDecimal

上一篇下一篇

猜你喜欢

热点阅读