lua math.modf 函数问题!! 20

functionmain()localnum1=0localnum2=0fori=1,1000dolocala,b=math.modf(i/10)--将整数于小数分开lo... function main ()
local num1 = 0
local num2 = 0
for i = 1, 1000 do
local a, b = math.modf(i/10) -- 将整数于小数分开
local c, d = math.modf(i/10)
if b == 0 or d == 0.7 then
num1 = num1 + 1
num2 = num2 + i
end
end
print("个数:"..num1.."总和:"..num2)
end

这个函数是 求1 - 1000 内 能被7整除的或者个位数是7 的数字个数于总和
math.modf ()函数是将整数于小数分开 很多教程说 math.modf(15.98) 得到15 98 但是
我实际运行返回的是 15 于0.98
上面函数当i<20 是 能进入下面判断,但是当i>20 时 d 是0.7 但是却不能进到判断内

function main ()
local i = 1.7
local c, d = math.modf(i)
if d == 0.7 then
num1 = num1 + 1
num2 = num2 + i
end
end
上面函数 直接定义i 值,当i是0.7 1.7时 能进入下面判断
当2.7 3.7 4.7.... 时无法进入判断!!

求高手解答
展开
 我来答
飘雨56
推荐于2018-04-05 · 一分耕耘一分收获,凡事预则立
飘雨56
采纳数:931 获赞数:4490

向TA提问 私信TA
展开全部
当2.7 3.7 4.7.... 时,d的值确实一直都是0.7,可判断的时候d就不等于0.7了,写不等于就可以进入判断。我也纳闷了
w2moon
2012-02-03 · TA获得超过409个赞
知道小有建树答主
回答量:376
采纳率:0%
帮助的人:268万
展开全部
浮点数用 == 判断结果不一定是什么,整数才能用 ==号
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
歪第埃斯
2020-05-15 · 超过29用户采纳过TA的回答
知道答主
回答量:54
采纳率:100%
帮助的人:25.1万
展开全部
lua内number是用double类型储存的,会有精度问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式