golang 中大数运算

一、写在前面

最近看到小伙伴遇到超大数 使用int64(longint) 无法运算 超出范围等错误,下面是math中的大数加减乘除运算希望对大家有帮助

二、超大数据计算

package main

import (
    "fmt"
    "math/big"
)

func BigIntAdd(numstr string, num int64) string {
    n, _ := new(big.Int).SetString(numstr, 10)
    m := new(big.Int)
    m.SetInt64(num)
    m.Add(n, m)
    return m.String()
}

func BigIntReduce(numstr string, num int64) string {
    n, _ := new(big.Int).SetString(numstr, 10)
    m := new(big.Int)
    m.SetInt64(-num)
    m.Add(n, m)
    return m.String()
}

func BigIntMul(numstr string, num int64)string{
    n, _ := new(big.Int).SetString(numstr, 10)
    m := new(big.Int)
    m.SetInt64(num)
    m.Mul(n, m)
    return m.String()

}

func BigIntDiv(numstr string, num int64)string{

    n, _ := new(big.Int).SetString(numstr, 10)
    m := new(big.Int)
    m.SetInt64(num)
    m.Div(n, m)
    return m.String()

}

func main(){
    numstr := "1515631351536151161464461151511561"
    //加
    fmt.Println(BigIntAdd(numstr, 99))
    //减
    fmt.Println(BigIntReduce(numstr, 99))
    //乘
    fmt.Println(BigIntMul(numstr,99))
    //除
    fmt.Println(BigIntDiv(numstr,99))

}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1.大数储存 RSA 依赖大数运算,目前主流RSA 算法都建立在512 到1024位的大数运算之上。而大多数的编译...
    DuomiLiang阅读 2,944评论 0 0
  • 1 关键字 1.1 关键字的概述 Java的关键字对java的编译器有特殊的意义,他们用来表示一种数据类型,或...
    哈哈哎呦喂阅读 765评论 0 0
  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young阅读 4,169评论 1 10
  • 第一章数和数的运算 一概念 (一)整数 1整数的意义 自然数和0都是整数。 2自然数 我们在数物体的时候,用来表示...
    meychang阅读 2,832评论 0 5
  • 深秋之际,一场雨夹雪,气温下降到零下五度左右,昨日秋裤加厚裤子还是冷冷的感觉,背阴处还有白雪覆盖。预报说,这个周末...
    蛇夕阅读 265评论 1 2

友情链接更多精彩内容