为了账号安全,请及时绑定邮箱和手机立即绑定

mysql查询的数值和返回的不一样

mysql查询的数值和返回的不一样

米琪卡哇伊 2019-02-27 01:50:20
mysql查询的数值是85.70,但是mybatis里接到的值却是85.69999。如果查询的值大于100就不会出现这个问题。这是什么原因呢?
查看完整描述

10 回答

?
ibeautiful

TA贡献1993条经验 获得超5个赞

这个貌似是由于:小数转二进制后可能会有一定误差。你拿到数据处理一下吧。

查看完整回答
反对 回复 2019-03-01
?
慕无忌1623718

TA贡献1744条经验 获得超4个赞

mysql查询是指 navicat? 还是控制台?

查看完整回答
反对 回复 2019-03-01
?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

贴一下你数据库那个字段的数据类型,还有mybatis里pojo类对应属性的数据类型

查看完整回答
反对 回复 2019-03-01
?
慕后森

TA贡献1802条经验 获得超5个赞

pojo 是反向工程生产的吗,估计是你配置错了,信息给完整点,应该不会出现这个误差
还有一种解决思路,当你觉得很难处理这些值的精确度的时候,你可以用 字符串的形式,原原本本的保存起来

查看完整回答
反对 回复 2019-03-01
?
慕村9548890

TA贡献1884条经验 获得超4个赞

应该是遇到浮点数精度问题了,MySQL里你的字段类型是float还是numeric?

查看完整回答
反对 回复 2019-03-01
?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

感觉是浮点数精度问题。。麻烦贴一下数据库字段类型

查看完整回答
反对 回复 2019-03-01
?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

方便的话就是把字段类型FLOAT改成DECIMAL

查看完整回答
反对 回复 2019-03-01
?
饮歌长啸

TA贡献1951条经验 获得超3个赞

应该是浮点数精度问题,Java对象中对应字段类型是float?如果只是查询不需要运算建议改成double。
Java不擅长浮点数运算,如果要进行加减乘除运算的话,建议将字段改成java.math.BigDecimal类型进行。
或者将Java的字段field类型改为long,sql语句中用select field*100,处理完了之后再转成double并除以100。

查看完整回答
反对 回复 2019-03-01
?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

不要用浮点类型(float或double)去接收mybatis查询的值啊,要用BigDecimal去接收。 听我的,没错

查看完整回答
反对 回复 2019-03-01
  • 10 回答
  • 0 关注
  • 669 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信