在围棋,什么是转换的最佳策略int64来int?我很难比较两者
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 }
您将其转换为类型“转换”
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,可以使用
maxInt
for a := 2; a < int(maxInt); a++ {
如果系统上类型maxInt的最大值溢出,则将无法正确执行int。