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

新手上路,请多包涵

mysql查询的数值是85.70,但是mybatis里接到的值却是85.69999。如果查询的值大于100就不会出现这个问题。这是什么原因呢?

阅读 5.3k
10 个回答

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

你在SQL查询的时候进行截取,保留需要的小数点位 select round(xxx(字段名),m(保留小数点位)) ...

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

新手上路,请多包涵

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

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

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

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

新手上路,请多包涵

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

新手上路,请多包涵

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

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题