You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

getFloat()返回值与原数据不符的原因咨询

为什么用getFloat()获取数据时16797533会变成16797532?

这本质是单精度浮点数(Float)的精度限制问题:

  • Float是32位单精度浮点数,只有24位有效二进制位,对应十进制的话大概是6-7位有效数字。你的数值16797533是8位数字,已经超出了Float能精确表示的范围。
  • 当你用new Float(16797533)创建对象时,JVM就会把这个数舍入到Float能表示的最近值——也就是16797532,所以后续打印出来的结果自然是这个舍入后的值。
  • 如果数据库里的字段类型也是Float,那数据在存入时就已经被舍入过了,用getFloat()读取时自然拿不到原始值;而改用getString()的话,相当于直接读取数据库中存储的字符串形式(或精确数值类型的字符串表示),避开了浮点数的精度损失问题。

内容的提问来源于stack exchange,提问作者Jaya Joshi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 06:03:18