浙江省长兴县建设局网站,如何选择网站模板,临沂网站建设设计,百度咨询电话 人工目录效果加减乘除乘方源码版本#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]))