Golang:合并两个数字
Golang: Combine two numbers
我觉得问这个问题很愚蠢,但我怎样才能在 GO 中存档以下内容?
假设我有两个 int32,它们的值都是 33。
如何将它们组合成一个值为 3333 而不是 66 的 int32?
var a, b int32 = 33, 33
a = a*100 + b
fmt.Println(a)
编辑:这是一个根据数字计算填充的版本:
func main() {
var a, b int32 = 1234, 456
a = a*padding(b) + b
fmt.Println(a)
}
func padding(n int32) int32 {
var p int32 = 1
for p < n {
p *= 10
}
return p
}
请注意,您还应检查 int32 是否不会溢出。如果您不想担心溢出,可以改用 big.Int。
与 Ainar-G 的解决方案相比,我不知道性能如何,但是这个怎么样:
var a, b int32 = 33, 33
result, err := strconv.Atoi(fmt.Sprintf("%d%d", a, b))
if err != nil {
panic(err)
}
fmt.Println(int32(result))
我觉得问这个问题很愚蠢,但我怎样才能在 GO 中存档以下内容?
假设我有两个 int32,它们的值都是 33。
如何将它们组合成一个值为 3333 而不是 66 的 int32?
var a, b int32 = 33, 33
a = a*100 + b
fmt.Println(a)
编辑:这是一个根据数字计算填充的版本:
func main() {
var a, b int32 = 1234, 456
a = a*padding(b) + b
fmt.Println(a)
}
func padding(n int32) int32 {
var p int32 = 1
for p < n {
p *= 10
}
return p
}
请注意,您还应检查 int32 是否不会溢出。如果您不想担心溢出,可以改用 big.Int。
与 Ainar-G 的解决方案相比,我不知道性能如何,但是这个怎么样:
var a, b int32 = 33, 33
result, err := strconv.Atoi(fmt.Sprintf("%d%d", a, b))
if err != nil {
panic(err)
}
fmt.Println(int32(result))