golang在两个uint值上使用math.max的正确方法是什么?

时间:2015-01-29 04:37:13

标签: go

这就是我所做的,它非常难看。

math.Max用于2 uint的正确方法是什么?

vs.curView.Viewnum =uint(math.Max(float64(args.Viewnum+1), float64(vs.curView.Viewnum)))

2 个答案:

答案 0 :(得分:10)

math.Max存在的主要原因是确保正确处理IEEE浮点的某些特殊情况(正无穷大,NaN和有符号零)。

这些问题与简单整数无关,因此您也可以使用明显的实现。类似的东西:

if args.Viewnum+1 > vs.curView.Viewnum {
    vs.curView.Viewnum = args.Viewnum+1
}

答案 1 :(得分:0)

尽管问题很老,也许this package将节省某人的时间和精力。通常可以通过go get并通过URL导入获取它。

用法:

import (
    "fmt"
    "<Full URL>/go-imath/ix" // Functions for int type
)
...
fmt.Println(ix.Max(100, 152)) // Output: 152
fmt.Println(ix.Maxs(234, 55, 180)) // Output: 234
fmt.Println(ix.MaxSlice([]int{2, 29, 8, -1})) // Output: 29