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

怎么保证计算过后小数存入数据库之后精度无损?

怎么保证计算过后小数存入数据库之后精度无损?

明月笑刀无情 2019-03-19 17:19:48
无限循环的小数存入数据库的时候有精度丢失,获取出来之后与之前的数据对不上,比如说我要保存3条1/3的无限小数数据,然后获取出来的时候能保证这3条数据的相加结果能等于1,怎么有效解决.?
查看完整描述

3 回答

?
紫衣仙女

TA贡献1839条经验 获得超15个赞

用长文本类型来保存
mysql中的 LONGTEXT 最大长度为4,294,967,295个字符 应该够用了吧
其他数据库也有类似对应的长文本类型

update 
分数你直接用字符串来存就好了
比如1/3,然后取出运算还原结果


查看完整回答
反对 回复 2019-04-16
?
尚方宝剑之说

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

可以使用字符串来保存


查看完整回答
反对 回复 2019-04-16
?
万千封印

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

浮点数加减的问题你是无法避免的,你只能保证你写入的数值和读出的数值上的一致;

  • 数据库字段才用二进制格式,直接写入原始float值的二进制字节数值;

  • 读出后采用该二进制数值恢复到float类型

浮点数加减部分无解,你只能提高float的精度,采用double等类型;


查看完整回答
反对 回复 2019-04-16
  • 3 回答
  • 0 关注
  • 831 浏览

添加回答

举报

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