Go 带返回商和余数的除法
我尝试从Python迁移到Golang。我目前正在研究一些数学运算,想知道如何用除法的结果同时得到商和余数。下面我将与大家分享一段相当于Python的代码Go 带返回商和余数的除法,go,Go,我尝试从Python迁移到Golang。我目前正在研究一些数学运算,想知道如何用除法的结果同时得到商和余数。下面我将与大家分享一段相当于Python的代码 hours, remainder = divmod(5566, 3600) minutes, seconds = divmod(remainder, 60) print('%s:%s' % (minutes, seconds)) # 32:46 以上将是我的目标。谢谢。整数除法加模可以实现这一点 func divmod(numerator,
hours, remainder = divmod(5566, 3600)
minutes, seconds = divmod(remainder, 60)
print('%s:%s' % (minutes, seconds))
# 32:46
以上将是我的目标。谢谢。整数除法加模可以实现这一点
func divmod(numerator, denominator int64) (quotient, remainder int64) {
quotient = numerator / denominator // integer division, decimals are truncated
remainder = numerator % denominator
return
}
编辑:定义
商在整数除法中,是分子进入分母的整数倍数。换句话说,它与十进制语句相同:FLOOR(n/d)
模给出这种除法的剩余部分。分子和分母的模数将始终介于0和d-1之间(其中d是分母)如果您想要一行
quotient, remainder := numerator/denominator, numerator%denominator
如果您有一个32位的数字,您可以使用其中一个:
package main
import "math/bits"
func main() {
{ // example 1
var n uint = 4294967295
q, r := bits.Div(0, n, 2)
println(q == n / 2, r == 1)
}
{ // example 2
var n uint32 = 4294967295
q, r := bits.Div32(0, n, 2)
println(q == n / 2, r == 1)
}
}
如果您有一个64位数字,您可以这样做:
package main
import "math/bits"
func main() {
var n uint64 = 18446744073709551615
q, r := bits.Div64(0, n, 2)
println(q == n / 2, r == 1)
}
package main
import "math/bits"
func main() {
q, r := bits.Div64(1, 0, 2)
println(q == 9223372036854775808, r == 0)
}
如果您有大于64位的内容,可以这样做:
package main
import "math/bits"
func main() {
var n uint64 = 18446744073709551615
q, r := bits.Div64(0, n, 2)
println(q == n / 2, r == 1)
}
package main
import "math/bits"
func main() {
q, r := bits.Div64(1, 0, 2)
println(q == 9223372036854775808, r == 0)
}