为什么当我删除小数点时,我的组合函数不能正确打印大数?(在Lua中)
2019-6-6 13:44:47
收藏:0
阅读:103
评论:0
在lua中怎样才能正确打印大数 - 不会出现如e+之类的问题?另外,我怎样能够在不使用math.floor()的情况下删除小数点数字,例如123456.0?
我为a、b小于100的组合函数创建了一个函数。首先,我用阶乘函数制作,但它出现了溢出。因此,我用阶乘分解进行制作。范围小于100,因此我找到了小于100的质数并使用它们制作了它。
local n, m = io.read("*n", "*n")
local prime = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31,
37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97}
function make_case()
local prime_case = {}
for i, v in ipairs(prime) do
prime_case[i] = {v, 0}
end
return prime_case
end
function fact(n, m, ans)
local case = ans
for i = m, n do
if i ~= 0 then
local num = i
for j, v in ipairs(case) do
repeat
if num % v[1] == 0 then
num = num / v[1]
case[j][2] = case[j][2] + 1
else
break
end
until num % v[1] ~= 0
if num == 1 then
break
end
end
end
end
return case
end
if n-m > m then
m = n - m
end
local top_case = make_case()
local bot_case = make_case()
local top = fact(n, m+1, top_case)
local bot = fact(n-m, 0, bot_case)
local tot = 1
for i, v in ipairs(top) do
--print(v[1], v[2], bot[i][2])
top[i][2] = top[i][2] - bot[i][2]
tot = tot * (top[i][1]^top[i][2])
end
print(math.floor(tot))
我尝试了输入值为64, 40,我得到的结果是2.5064910546967e+17(当我只打印tot时)。我不想在此结果中看到小数点,因此我对结果进行了math.floor处理。这个结果是250649105469666112,但最后2位数是错误的。该输入的正确答案是250649105469666100。
其他小输入效果非常好,因此我认为这个问题源于打印上。如何逐位打印大数字?
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
