加入收藏 | 设为首页 | 会员中心 | 我要投稿 拼字网 - 核心网 (https://www.hexinwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

大数big number的加减运算

发布时间:2021-01-08 00:06:54 所属栏目:大数据 来源:网络整理
导读:以下是Lua的实现: function plus(str1,str2) ? ? local increase = 0 ? ? local t = {} ? ? local max = math.max(string.len(str1),string.len(str2)) ? ? for i = 0,max-1 do ? ? ? ? local ch1 = string.sub(str1,-1 - i,-1 - i) ? ? ? ? local ch2 = st

以下是Lua的实现:

function plus(str1,str2)
? ? local increase = 0
? ? local t = {}
? ? local max = math.max(string.len(str1),string.len(str2))
? ? for i = 0,max-1 do
? ? ? ? local ch1 = string.sub(str1,-1 - i,-1 - i)
? ? ? ? local ch2 = string.sub(str2,-1-i,-1-i)
? ? ? ? if ch1 == "" then ch1 = "0" end
? ? ? ? if ch2 == "" then ch2 = "0" end
? ? ? ? local newv = increase + ch1 + ch2
? ? ? ? increase = (newv - newv % 10) / 10
? ? ? ? table.insert(t,newv%10)
? ? end
? ? if increase > 0 then
? ? ? ? table.insert(t,increase)
? ? end
? ? local len = #t
? ? local tmp
? ? for i = 1,len/2 do
? ? ? ? tmp = t[i]
? ? ? ? t[i] = t[len-i+1]
? ? ? ? t[len-i+1] = tmp
? ? end
? ? return table.concat(t)
end

function minus(m1,m2)
? ? local borrow = 0
? ? local t = {}
? ? local max = math.max(string.len(m1),string.len(m2))
? ? for i = 0,max-1 do
? ? ? ? local ch1 = string.sub(m1,-1 -i,-1-i)
? ? ? ? local ch2 = string.sub(m2,-1-i)
? ? ? ? if ch2 == "" then ch2 = '0' end
? ? ? ? if ch1 - ch2 - borrow >= 0 then
? ? ? ? ? ? table.insert(t,ch1-ch2-borrow)
? ? ? ? ? ? borrow = 0
? ? ? ? else
? ? ? ? ? ? table.insert(t,ch1+10 - ch2 - borrow)
? ? ? ? ? ? borrow = 1
? ? ? ? end
? ? end

? ? repeat ? ? ? ? if #t == 0 or t[#t] ~= 0 then ? ? ? ? ? ? break ? ? ? ? end ? ? ? ? table.remove(t) ? ? until #t == 0 ? ? local len = #t ? ? local tmp ? ? for i = 1,len/2 do ? ? ? ? tmp = t[i] ? ? ? ? t[i] = t[len-i+1] ? ? ? ? t[len-i+1] = tmp ? ? end ? ? return table.concat(t) end

(编辑:拼字网 - 核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!