浙江省长兴县建设局网站,如何选择网站模板,临沂网站建设设计,百度咨询电话 人工目录效果加减乘除乘方源码版本#xff1a;Grey Hack v0.7.3619 - Alpha 在Gs中#xff0c;位数大于15的整数将以科学计数法显示#xff0c;故这里提供一种基于字符串加法的四则大数运算算法。由于位数大于10的字符串无法用to_int方法转化为整数#xff0c;因此本示例中以长…
目录效果加减乘除乘方源码版本Grey Hack v0.7.3619 - Alpha 在Gs中位数大于15的整数将以科学计数法显示故这里提供一种基于字符串加法的四则大数运算算法。由于位数大于10的字符串无法用to_int方法转化为整数因此本示例中以长度9分割字符串以加速计算。
效果
加 减 乘 除 乘方 对照
源码
add function(Str0, Str1)Str0 Str0.trimStr1 Str1.trimif Str0[0] or Str0[0] - thenStrNum0 Str0[1:]elseStrNum0 Str0[0:]end if while StrNum0[0] 0 and len(StrNum0) 1StrNum0 StrNum0[1:]end whileLen0 len(StrNum0)if Str1[0] or Str1[0] - thenStrNum1 Str1[1:]elseStrNum1 Str1[0:]end ifwhile StrNum1[0] 0 and len(StrNum1) 1StrNum1 StrNum1[1:]end whileLen1 len(StrNum1)if Str0[0] - then Sign0 -elseSign0 end ifif Str1[0] - then Sign1 -elseSign1 end ifSign if Len0 Len1 thenSign Sign0StrLonger StrNum0[0:]StrSmaller StrNum1[0:]else if Len0 Len1 thenSign Sign1StrLonger StrNum1[0:]StrSmaller StrNum0[0:]elsefor _ in range(0, Len0 - 1, 1)if StrNum0[_].to_int StrNum1[_].to_int thenSign Sign0StrLonger StrNum0[0:]StrSmaller StrNum1[0:]else if StrNum0[_].to_int StrNum1[_].to_int thenSign Sign1StrLonger StrNum1[0:]StrSmaller StrNum0[0:]end ifif Sign ! then breakend forend ifif Sign then Sign Sign0StrLonger StrNum0[0:]StrSmaller StrNum1[0:]end ifStrLongerList [] while len(StrLonger) 9StrLongerList StrLongerList [StrLonger[-9:]]StrLonger StrLonger[:-9]end whileif StrLonger ! then StrLongerList StrLongerList [StrLonger]StrSmallerList [] while len(StrSmaller) 9StrSmallerList StrSmallerList [StrSmaller[-9:]]StrSmaller StrSmaller[:-9]end whileif StrSmaller ! then StrSmallerList StrSmallerList [StrSmaller]ResultStr if Sign0 Sign1 then Jinwei 0for _ in range(0, len(StrSmallerList) - 1, 1)temp Jinwei StrLongerList[_].to_int StrSmallerList[_].to_intif temp 1000000000 thentemp temp - 1000000000Jinwei 1elseJinwei 0end iftemp str(temp)while len(temp) 9temp 0 tempend whileResultStr temp ResultStrend forif len(StrLongerList) ! len(StrSmallerList) thenfor _ in range(len(StrSmallerList), len(StrLongerList) - 1, 1)temp Jinwei StrLongerList[_].to_intif temp 1000000000 thentemp temp - 1000000000Jinwei 1elseJinwei 0end iftemp str(temp)while len(temp) 9temp 0 tempend whileResultStr temp ResultStrend forend ifif Jinwei 1 thenResultStr 1 ResultStrJinwei 0end ifelseJiewei 0for _ in range(0, len(StrSmallerList) - 1, 1)temp Jiewei StrLongerList[_].to_int - StrSmallerList[_].to_intif temp 0 thentemp temp 1000000000Jiewei -1elseJiewei 0end iftemp str(temp)while len(temp) 9temp 0 tempend whileResultStr temp ResultStrend forif len(StrLongerList) ! len(StrSmallerList) thenfor _ in range(len(StrSmallerList), len(StrLongerList) - 1, 1)temp Jiewei StrLongerList[_].to_intif temp 0 thentemp temp 1000000000Jiewei -1elseJiewei 0end iftemp str(temp)while len(temp) 9temp 0 tempend whileResultStr temp ResultStrend forend ifend ifwhile ResultStr[0] 0 and len(ResultStr) 1ResultStr ResultStr[1:]end whileResultStr Sign ResultStrif len(ResultStr) 2 and ResultStr[1] 0 thenreturn 0elsereturn ResultStrend if
end functionsub function(Str0, Str1)Str0 Str0.trimStr1 Str1.trimif Str0[0] or Str0[0] - thenStrNum0 Str0[1:]elseStrNum0 Str0[0:]end if while StrNum0[0] 0 and len(StrNum0) 1StrNum0 StrNum0[1:]end whileif Str1[0] or Str1[0] - thenStrNum1 Str1[1:]elseStrNum1 Str1[0:]end ifwhile StrNum1[0] 0 and len(StrNum1) 1StrNum1 StrNum1[1:]end whileif Str0[0] - then Sign0 -elseSign0 end ifif Str1[0] - then Sign1 elseSign1 -end ifreturn add(Sign0 StrNum0, Sign1 StrNum1)
end functionmul function(Str0, Str1)Str0 Str0.trimStr1 Str1.trimif Str0[0] or Str0[0] - thenStrNum0 Str0[1:]elseStrNum0 Str0[0:]end if while StrNum0[0] 0 and len(StrNum0) 1StrNum0 StrNum0[1:]end whileLen0 len(StrNum0)if Str1[0] or Str1[0] - thenStrNum1 Str1[1:]elseStrNum1 Str1[0:]end ifwhile StrNum1[0] 0 and len(StrNum1) 1StrNum1 StrNum1[1:]end whileLen1 len(StrNum1)if StrNum0 0 or StrNum1 0 then return 0if Str0[0] - then Sign0 -elseSign0 end ifif Str1[0] - then Sign1 -elseSign1 end ifSign if Len0 Len1 thenSign Sign0StrLonger StrNum0[0:]StrSmaller StrNum1[0:]else if Len0 Len1 thenSign Sign1StrLonger StrNum1[0:]StrSmaller StrNum0[0:]elsefor _ in range(0, Len0 - 1, 1)if StrNum0[_].to_int StrNum1[_].to_int thenSign Sign0StrLonger StrNum0[0:]StrSmaller StrNum1[0:]else if StrNum0[_].to_int StrNum1[_].to_int thenSign Sign1StrLonger StrNum1[0:]StrSmaller StrNum0[0:]end ifif Sign ! then breakend forend ifif Sign then Sign Sign0StrLonger StrNum0[0:]StrSmaller StrNum1[0:]end ifif Sign0 Sign1 thenSign elseSign -end ifResultStr 0while StrSmaller ! 0StrSmaller add(StrSmaller, -1)ResultStr add(ResultStr, StrLonger)end whilereturn (Sign ResultStr[1:])
end functiondiv function(Str0, Str1)Str0 Str0.trimStr1 Str1.trimif Str0[0] or Str0[0] - thenStrNum0 Str0[1:]elseStrNum0 Str0[0:]end if while StrNum0[0] 0 and len(StrNum0) 1StrNum0 StrNum0[1:]end whileif Str1[0] or Str1[0] - thenStrNum1 Str1[1:]elseStrNum1 Str1[0:]end ifwhile StrNum1[0] 0 and len(StrNum1) 1StrNum1 StrNum1[1:]end whileif StrNum1 0 then exit(Runtime error: divide by zero)if StrNum0 0 then return [0, 0]if Str0[0] - then Sign0 -elseSign0 end ifif Str1[0] - then Sign1 -elseSign1 end ifif Sign0 Sign1 thenSign elseSign -end ifResultStr 0TempStr sub(StrNum0, StrNum1)while TempStr[0] ! - StrNum0 TempStrTempStr sub(StrNum0, StrNum1)ResultStr add(ResultStr, 1)end whileif ResultStr[0] then ResultStr Sign ResultStr[1:]end ifif StrNum0[0] then StrNum0 Sign0 StrNum0[1:]end ifreturn [ResultStr, StrNum0]
end functionpow function(Str0, Str1)Str0 Str0.trimStr1 Str1.trimif Str0[0] or Str0[0] - thenStrNum0 Str0[1:]elseStrNum0 Str0[0:]end if while StrNum0[0] 0 and len(StrNum0) 1StrNum0 StrNum0[1:]end whileif Str1[0] or Str1[0] - thenStrNum1 Str1[1:]elseStrNum1 Str1[0:]end ifwhile StrNum1[0] 0 and len(StrNum1) 1StrNum1 StrNum1[1:]end whileif StrNum1 0 then return 1if StrNum0 0 then return 0if Str0[0] - then Sign0 -elseSign0 end ifif Str1[0] - then Sign1 -elseSign1 end ifResultStr 1while StrNum1 ! 0ResultStr mul(ResultStr, Sign0 StrNum0)StrNum1 add(StrNum1, -1)end whilereturn ResultStr
end function// print(add(params[0],params[1]))
// print(sub(params[0],params[1]))
// print(mul(params[0],params[1]))
// print(div(params[0],params[1]))
// print(pow(params[0],params[1]))