gpt4 book ai didi

go - 如何在 Go 中将 int64 转换为 int?

转载 作者:IT老高 更新时间:2023-10-28 13:02:04 26 4
gpt4 key购买 nike

在 Go 中,将 int64 转换为 int 的最佳策略是什么?我很难比较两者

package main 

import (
"math"
"strings"
"strconv"
)

type largestPrimeFactor struct {
N int
Result int
}

func main() {
base := largestPrimeFactor{N:13195}
max := math.Sqrt(float64(base.N))

maxStr := strconv.FormatFloat(max, 'E', 'G', 64)
maxShift := strings.Split(maxStr, ".")[0]
maxInt, err := strconv.ParseInt(maxShift, 10, 64)

if (err != nil) {
panic(err)
}

在下一行

    for a := 2; a < maxInt; a++ {
if isPrime(a) {
if base.N % a == 0 {
base.Result = a
}
}
}

println(base)
}

func isPrime(n int) bool {
flag := false

max := math.Sqrt(float64(n))

maxStr := strconv.FormatFloat(max, 'E', 'G', 64)
maxShift := strings.Split(maxStr, ".")[0]
maxInt, err := strconv.ParseInt(maxShift, 10, 64)

if (err != nil) {
panic(err)
}

for a := 2; a < maxInt; a++ {
if (n % a == 0) {
flag := true
}
}
return flag
}

最佳答案

您使用类型 "conversion" 转换它们

var a int
var b int64
int64(a) < b

比较值时,您总是希望将较小的类型转换为较大的类型。以其他方式转换可能会截断值:

var x int32 = 0
var y int64 = math.MaxInt32 + 1 // y == 2147483648
if x < int32(y) {
// this evaluates to false, because int32(y) is -2147483648

或者在您的情况下将 maxInt int64 值转换为 int,您可以使用

for a := 2; a < int(maxInt); a++ {

如果 maxInt 溢出系统上 int 类型的最大值,将无法正确执行。

关于go - 如何在 Go 中将 int64 转换为 int?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38750545/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com