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

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

米琪卡哇伊
浏览 670回答 10
10回答

ibeautiful

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

慕无忌1623718

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

牛魔王的故事

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

慕后森

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

慕村9548890

应该是遇到浮点数精度问题了,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去接收。 听我的,没错
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java