找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2330|回复: 0

[教程源码] 为什么1.4-1.3不等于0.1?为什么10等于9.999999999999999999?

[复制链接]
  • 打卡等级:坠落山崖

1081

主题

2107

回帖

4289

积分

院长

鲜花
7
猫粮
7500
QQ
发表于 2019-3-29 17:40:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
在之前电脑版我发过 1.4 - 1.3为什么会出现不等于0.1

有同学提出手机版没有ccur()函数, 无法处理解决这个问题, 怎么办?
例如下面这种诡异的代码

[按键精灵] 纯文本查看 复制代码
If 1.4-1.3 = 0.1 Then 
        TracePrint "两个0.1相等"
Else 
        TracePrint "两个0.1不相等"  //会输出不相等
End If

If 10 = 9.999999999999999999 Then 
        TracePrint "10与9.999999999999999999相等"  //会输出相等
Else
        TracePrint "10与9.999999999999999999不相等"
End If


其实这是与上面电脑版的原因差不多, 都是精度损失导致的问题, 而Lua 5.2的数值都是以double形式存放的, 没有货币型.

所以这里我们可以考虑采用CStr()转换字符串来做是否相等的判断, 这样就不会出现无法判断是否相等的问题了.
楼主热帖
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|紫猫编程学园

GMT+8, 2024-4-23 14:16

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表