为了账号安全,请及时绑定邮箱和手机立即绑定

golang - 像 php 一样的 ceil 函数?

golang - 像 php 一样的 ceil 函数?

Go
吃鸡游戏 2021-07-02 10:03:15
我想返回大于或等于整数除法的最小整数值。所以我使用了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.3int(math.Ceil(d))=5


查看完整回答
反对 回复 2021-07-05
?
慕森卡

TA贡献1806条经验 获得超8个赞

避免浮点运算(为了性能和清晰度):

x, y := length, pagesize
q := (x + y - 1) / y;

对于x >= 0y > 0

或者为了避免溢出x+y

q := 1 + (x - 1) / y

与 C++ 版本相同:C/C++ 中整数除法的快速上限


查看完整回答
反对 回复 2021-07-05
  • 3 回答
  • 0 关注
  • 295 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信