我想返回大于或等于整数除法的最小整数值。所以我使用了math.ceil,但无法获得我想要的值。package mainimport ( "fmt" "math")func main() { var pagesize int = 10 var length int = 43 d := float64(length / pagesize) page := int(math.Ceil(d)) fmt.Println(page) // output 4 not 5}http://golang.org/pkg/math/#Ceilhttp://play.golang.org/p/asHta1HkO_怎么了?谢谢。
3 回答
MMTTMM
TA贡献1869条经验 获得超4个赞
线
d := float64(length / pagesize)
转换为浮动除法结果。由于除法本身是整数除法,因此结果为 4,因此 d = 4.0 且math.Ceil(d)
为 4。
将行替换为
d := float64(length) / float64(pagesize)
你将拥有d=4.3
和int(math.Ceil(d))=5
。
慕森卡
TA贡献1806条经验 获得超8个赞
避免浮点运算(为了性能和清晰度):
x, y := length, pagesize q := (x + y - 1) / y;
对于x >= 0
和y > 0
。
或者为了避免溢出x+y
:
q := 1 + (x - 1) / y
与 C++ 版本相同:C/C++ 中整数除法的快速上限
- 3 回答
- 0 关注
- 295 浏览
添加回答
举报
0/150
提交
取消