数据库中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)
数据库中float类型字段,转化到前端显示,统一保留两位小数的更多相关文章
- JavaScript中Float类型保留两位小数
JavaScript中Float类型保留两位小数 核心方法: num:要操作的数字 size:要保留的位数 parseFloat(num).toFixed(size); 实现代码如下:var ...
- layui table 前台数字格式保留两位小数,不足补0(mysql 数据库)
layui table 对于后台json数据,有数字的,默认不会原样显示,而是只取数值,即100.00显示为100.如果想原样显示,需转为字符串. 项目采用mysql数据库,字段类型为decimal( ...
- Java中四舍五入保留两位小数
Java中四舍五入保留两位小数 方法一 四舍五入 double f = 3.15; long res = Math.round(f); #结果 res = 3 保留两位小数 double f = 3. ...
- java double类型保留两位小数4种方法【转】
4种方法,都是四舍五入,例: import java.math.BigDecimal; import java.text.DecimalFormat; import java.text.NumberF ...
- decimal类型数据如何保留两位小数
日常开发中,decimal作为货币类型,经常会处理保留两位小数的问题. 本站整理两种,decimal类型保留两位小数的方法. 第一种: decimal d = 46.28111m;string res ...
- Oracle中保留两位小数
在最近的项目开发中,有个业务需求是界面显示的数字需要保留两位小数,目前我想到的解决方法有两种: (1)在写SQL的时候,直接保留两位小数 (2)在java代码里面将查询出来的数进行格式化处理,保留两位 ...
- 19-6/24作业: 将一个double类型的小数,按照四舍五入保留两位小数
☞要求 将一个double类型的小数,按照四舍五入保留两位小数 ☞实现方式 1.获得一个double类型的小数 2.使用BigDecimal包的setScale进行操作 3.输出结果 ☞代码内容 pa ...
- js限制输入数字能输入小数点,js定义数组,js往数组中添加数据,js将字符型转为数字型,除法结果保留两位小数——js小测:计算比赛得分
一个朋友跟我说要去给某个比赛算分: 规则:去掉最低分最高分求平均分: 最近在学习大数据可视化——图谱,用到js一些东西,所以今天就用js练练 用到知识点: js限制输入数字能输入小数点,js定义数组, ...
- 字符串怎么换行 || 字符串中使用单引号时应该怎么写 || 保留两位小数 || 数字0在if中的意思是false || 什么情况下会会报undefined || null和undefined的区别 ||
换行的字符串 "This string\nhas two lines" 字符串中使用单引号时应该怎么写 'You\'re right, it can\'t be a quote' ...
随机推荐
- 126邮箱发送邮件python实现
126邮箱发送邮件python实现 from email.mime.text import MIMEText from email.utils import formataddr import smt ...
- Linux 独立安装subversion-1.8.18
一.所需软件包 1.apr-1.4.6.tar.gz 下载地址:http://apr.apache.org/ 2.apr-util-1.4.1.tar.gz 下载地址:http://apr.apa ...
- HDU1205 吃糖果
吃糖果 Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Total Submis ...
- WPF Popup全屏 弹出方法。解决只显示75%的问题。
WPF Popup全屏 弹出方法.解决只显示75%的问题. WPF 中 Popup 有一个特点.当Popup的高度超过屏幕的75%的时候,只显示75%的高度. 如下代码: <Window x ...
- (转)JVM类生命周期概述:加载时机与加载过程
原文地址: http://blog.csdn.net/justloveyou_/article/details/72466105 JVM类加载机制主要包括两个问题:类加载的时机与步骤 和 类加载的方式 ...
- win10 uwp 验证输入 自定义用户控件
TextBox是给用户输入,我们有时要用户只输入数字,而用户输入汉字,我们就有提示用户,那么这东西用到次数很多,我们需要做成一个控件. 我们可以用别人的库,我找到一个大神写的库,很好用 我们使用这个库 ...
- JavaScript观察者模式
观察者模式观察者模式又叫发布订阅模式(Publish/Subscribe),它定义了一种一对多的关系,让多个观察者对象同时监听某一个主题对象,这个主题对象的状态发生变化时就会通知所有的观察者对象,使得 ...
- 【网络爬虫入门04】彻底掌握BeautifulSoup的CSS选择器
[网络爬虫入门04]彻底掌握BeautifulSoup的CSS选择器 广东职业技术学院 欧浩源 2017-10-21 1.引言 目前,除了官方文档之外,市面上及网络详细介绍BeautifulSoup ...
- PHP 单例模式解析和实战
一.什么是单例模式? 1.含义 作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统全局地提供这个实例.它不会创建实例副本,而是会向单例类内部存储的实例返回一个引用. 2. ...
- php7+apache2.4配置
因为需要搭建一套discuz的程序,所以就扯到了php. 对于php完全没接触过,然后就百度了下php的容器,看到apache可以.机子上刚好有装,就干脆用它了. 测试环境:win10x64+php7 ...