string转float的坑

        使用C# 中的 float.Parse 方法 将string 转 float 时,由于 float 精度问题,碰到一个奇怪的BUG,找了半天才解决,故此记录。

        发现问题:在我的 Unity 项目中有一个输入框,输入2.8,保存之后,下次加载出来竟然变成了2.79,再下次变成2.78,然后2.77,2.76,2.75(内心OS:WTF???这是什么鬼才BUG?逗我呢吧!)

        问题解决:找了半天,终于发现是把 string 转 float 的时候出了问题。float.Parse(text),"2.8" 转成 float 之后变成了2.79999999046326,然后因为输入框做了长度限制,Character Limit (使用的是Unity的Input Field 组件)为4,所以显示出来就是2.79了,"2.79"转成 float 又变成了 2.78999999046326,直到 2.75 (至于为什么到 2.75 就不再变小了,这个跟 float 在计算机中的数值表示方法有关)。

        emmmmm...网上找了一下解决办法,说是用 decimal 就不会丢失精度了,不过对我这个项目来说,转成 float 之后四舍五入一下就可以了,保留两位小数,完美。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值