本文共 981 字,大约阅读时间需要 3 分钟。
我们应该经常会遇到浮点数的计算或者控制浮点数小数位数,这里将工作中有可能会用到的一些控制浮点数精度的方法做出总结:
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)