浮点数精度控制方式总结(含mysql和java)

我们应该经常会遇到浮点数的计算或者控制浮点数小数位数,这里将工作中有可能会用到的一些控制浮点数精度的方法做出总结:
A.Mysql中的函数
format
format()函数会对小数部分超过指定位四舍五入,整数部分从右向左每3位一个逗号进行格式化输出
这里写图片描述
truncate(x,d)
整数位没有逗号分隔,小数位超过指定位直接舍去,不四舍五入
这里写图片描述
convert(expr,type);
convert()函数会对小数部分进行四舍五入操作,decimal(7,2)表示最终得到的结果整数部分位数加上小数部分位数小于等于7,小数部分位数2
这里写图片描述
B. Java中对于数字的格式化方法
DecimalFormat(java.text包下)
DecimalFormat 是 NumberFormat 的一个具体子类,用于格式化十进制数字,可以处理正数负数货币等等——api上有
这里写图片描述

这里写图片描述
NumberFormat(DecimalFormat的直接父类)
这里写图片描述
myString = NumberFormat.getInstance().format(myNumber);
getInstance 或 getNumberInstance 来获取常规数值格式。使用 getIntegerInstance 来获取整数数值格式。使用 getCurrencyInstance 来获取货币数值格式。使用 getPercentInstance 来获取显示百分比的格式。使用此格式,小数 0.53 将显示为 53%

NumberFormat f=NumberFormat.getPercentInstance();
        f.setMinimumIntegerDigits(4);//设置整数位数——其他同理
        f.setMinimumFractionDigits(2);//设置小数位数——其他同理

这里写图片描述
BigDecimal(一般使用该类型来表示金钱)
不可变的、任意精度的有符号十进制数。BigDecimal 由任意精度的整数(非标度值) 和 32 位的整数标度 (scale—即小数位) 组成。如果为零或正数,则标度是小数点后的位数。如果为负数,则将该数的非标度值乘以 10 的负 scale 次幂。因此,BigDecimal 表示的数值是 (unscaledValue × 10-scale)
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

於之

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值