Golang 基础(十一)整形

Overview

  • 整型的分类
    • 有符号整型
    • 无符号整型
  • 整形之间的转换 intxxx()
  • 整形与字符串之间的转换strconv
    • 整形转字符串
    • 字符串转整形
  • 超大整型math/big

Description

1)整型的分类

  • 有符号整型:

        int8 (-128 -> 127)

        int16 (-32768-> 32767)

        int32 (-2147483648 -> 2147483647)

        int64 (-9223372036854775808 -> 92233720368547758087)

        int,在32位操作系统上使用32位(同int32),在64位操作系统上使用64位(同int64)

  • 无符号整型:

        uint8:(0 -> 255)

        uint16:(0 -> 65535)

        uint32: (0 -> 4294967295)

        uint64:(0 -> 18446744073709551615)

        uint,在32位操作系统上使用32位(同uint32),在64位操作系统上使用64位(同uint64)

2)整形之间的转换 intxxx()

不同整形类型之间是不可以进行运算的

需要将其转为同一类型才可以:

package main

import (
	"fmt"
	"reflect"
)

func main() {
	var n1 int8 = 1
	var n2 int16 = 2
	n3 := int16(n1) + n2
	fmt.Println(n3, reflect.TypeOf(n3))
}

 3)整形与字符串之间的转换strconv

strconv.Itoa 也就是 Integer to ASCII

strconv.Atoi 也就是 ASCII to Integer

  • 整形转字符串

package main

import (
	"fmt"
	"reflect"
	"strconv"
)

func main() {
	var v1 int = 1
	v2 := strconv.Itoa(v1)
	fmt.Println(reflect.TypeOf(v2))
}
  • 字符串转整形

 

 

 字符串转整形的时候,strconv.Atoi是包含2个参数: (int,error),因此是

v2, err := strconv.Atoi(v1),可以使用"_"占位符来忽略err
package main

import (
	"fmt"
	"reflect"
	"strconv"
)

func main() {
	var v1 string = "1"
	v2, _ := strconv.Atoi(v1)
	fmt.Println(reflect.TypeOf(v2))
}

 4)超大整型math/big

  • 创建超大整型对象math/big

两种方式进行赋值:Setint64() 和SetString()

Setint64()

package main

import (
	"fmt"
	"math/big"
)

func main() {
	var v1 big.Int
	v1.SetInt64(9223372036854775807)
	fmt.Println(v1.Int64())
}
 SetString()

package main

import (
	"fmt"
	"math/big"
)

func main() {
	var v1 big.Int
	v1.SetString("92233720368547758079223372036854775807", 10)  //这里的10代表十进制
	fmt.Println(v1.String())
}
  •  对指针创建超大整形对象

 

package main

import (
	"fmt"
	"math/big"
)

func main() {
	//var v1 *big.Int 声明指针,默认是nil,无法直接赋值
	v2 := new(big.Int)
	v3 := new(big.Int)
	v2.SetInt64(9223372036854775807)
	v3.SetString("92233720368547758079223372036854775807", 10)
	fmt.Println(v2.Int64())
	fmt.Println(v3.String())
}
  •  超大整形的加减乘除

相加 .Add

package main

import (
	"fmt"
	"math/big"
)

func main() {
	n1 := new(big.Int)
	n2 := new(big.Int)
	n1.SetInt64(22)
	n2.SetInt64(2)
	//超大整型指针进行加紧乘除,需要重新定义一个新的变量来存储
	result := new(big.Int)
	result.Add(n1, n2)
	fmt.Println(result.Int64())
}
 相减 .Sub

package main

import (
	"fmt"
	"math/big"
)

func main() {
	n1 := new(big.Int)
	n2 := new(big.Int)
	n1.SetInt64(22)
	n2.SetInt64(2)
	//超大整型指针进行加紧乘除,需要重新定义一个新的变量来存储
	result := new(big.Int)
	result.Sub(n1, n2)
	fmt.Println(result.Int64())
}
 相乘 .Mul

 

package main

import (
	"fmt"
	"math/big"
)

func main() {
	n1 := new(big.Int)
	n2 := new(big.Int)
	n1.SetInt64(22)
	n2.SetInt64(2)
	//超大整型指针进行加紧乘除,需要重新定义一个新的变量来存储
	result := new(big.Int)
	result.Mul(n1, n2)
	fmt.Println(result.Int64())
}
 相除 .Div

package main

import (
	"fmt"
	"math/big"
)

func main() {
	n1 := new(big.Int)
	n2 := new(big.Int)
	n1.SetInt64(22)
	n2.SetInt64(2)
	//超大整型指针进行加紧乘除,需要重新定义一个新的变量来存储
	result := new(big.Int)
	result.Div(n1, n2)
	fmt.Println(result.Int64())
}

Golang 基础(十二)math常见数据数学运算-优快云博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值