数据库中float类型字段,转化到前端显示,统一保留两位小数

客户的一个需求,mybatis查询到的数据库的数据进行转换,采用TypeHandler<T>的方式。float保留两位精度可以采用DecimalFormat

  直接贴上最终的解决代码(事情没有想象的简单)

public class TwoDecimalFloatTypeHander implements  TypeHandler<String> {
	private static DecimalFormat decimalFormat=new DecimalFormat(".00");
	
	public String getResult(ResultSet resultSet, String columnName) throws SQLException {
		return decimalFormat.format(Double.parseDouble(resultSet.getString(columnName)));
		
	}

	public String getResult(ResultSet resultSet, int i) throws SQLException {
		return decimalFormat.format(Double.parseDouble(resultSet.getString(i)));
	}

	public String getResult(CallableStatement callableStatement, int columnIndex)
			throws SQLException {
		return  decimalFormat.format(Double.parseDouble(callableStatement.getString(columnIndex)));  
	}

	public void setParameter(PreparedStatement ps, int i, String str,
			JdbcType jdbcType) throws SQLException {
		ps.setFloat(i,Float.parseFloat(str));
	}
}

  注意问题:

  1. 采用ResultSet取数据库中的float数据的时候,应该是resultSet.getFloat(...),但是这种取法会导致数字的精度发生变化【实际场景中:1071.88取出来后变成了1071.9】

      解决:所以这里采用resultSet.getString(..)的方式来精确取值

  2. 取值之后,DecimalFormat要求的输入参数为数字,这时候要将上一步取到的数字转换,但是不要转换成float,不然又后变成1位小数,我采用double来转换。

  

 补充:如果要取的float字段为null,这样写就会报错,所以建议加上判断是否为空。(我的项目确定数字全部不为null)

转载于:https://www.cnblogs.com/winv758241/p/7229615.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值