如何在Go中将int64转换为int?
在Go中,将如何在Go中将int64转换为int?,go,int,int64,Go,Int,Int64,在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(
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
}
对于a:=2;a
您可以使用类型转换它们
如果
maxInt
溢出系统上int
类型的最大值,则无法正确执行 @pward JavaScript中没有整数类型。只有一种数字数据类型,名为Number,它是双精度浮点数,而不是整数。需要注意的是,尽管这个答案是经过检查的,但从技术上讲,它并不能解决这个问题所带来的问题,这就是如何将int64转换为int。@JimB我不是说你所说的不起作用,也不容易理解。我的意思是,它与我在问题中希望的转换方式相反。你的答案是通过假设我关心截断来操纵这种欲望。@pward:它还通过一个例子说明了为什么你应该关心截断。您应该了解整数类型是如何工作的,就像您应该知道为什么在javascript中0.1*0.2==0.0200000000000000004
一样。这里有一个例子——你想要的是让代码工作,但你要求的解决方案是不正确的。@JimB-Hmm,这是一个关于xy问题的有趣理论。在我看来,我认为更合理的做法是简单地用“你不能那样做”或“这个问题无法解决”来回答像我这样的问题,因为至少这个回答保留了问题的完整性。我说您的解决方案不能回答我的问题,因为它假设我想要的答案是正确的效果,例如“您想要的是代码工作”。我很感激你给我指出了一个更好的方向!
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
for a := 2; a < int(maxInt); a++ {