golang - ceil函数就像php一样?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang - ceil函数就像php一样?相关的知识,希望对你有一定的参考价值。
我想返回大于或等于整数除法的最小整数值。所以我使用math.ceil
,但无法获得我想要的价值。
package main
import (
"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/#Ceil
http://play.golang.org/p/asHta1HkO_
怎么了?谢谢。
答案
这条线
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
。
另一答案
在分割之前将长度和页面大小转换为浮点数:
d := float64(length) / float64(pagesize)
http://play.golang.org/p/FKWeIj7of5
另一答案
请注意,您可以使用
x, y := length, pagesize
q := (x + y - 1) / y;
对于x >= 0
和y > 0
。它也会非常快。
或者为了避免x+y
溢出:
q := 1 + ((x - 1) / y)
它与C ++版本相同:Fast ceiling of an integer division in C / C++
另一答案
您可以检查余数以查看是否应该将其提升到下一个整数。
page := length / pagesize
if length % pagesize > 0 {
page++
}
以上是关于golang - ceil函数就像php一样?的主要内容,如果未能解决你的问题,请参考以下文章
php取整函数ceil,floor,round,intval函数的区别
[单选题]<?php echo ceil(2.1/0.7); ?>
PHP取整函数ceil,floor,round,intval的区别