gitee.com/quant1x/gox@v1.21.2/api/number_decimals.go (about) 1 package api 2 3 import ( 4 "math" 5 ) 6 7 func IsNaN(f float64) bool { 8 return math.IsNaN(f) || math.IsInf(f, 0) 9 } 10 11 // Decimal 保留小数点四舍五入 12 func Decimal(value float64, digits ...int) float64 { 13 defaultDigits := 2 14 if len(digits) > 0 { 15 defaultDigits = digits[0] 16 if defaultDigits < 0 { 17 defaultDigits = 0 18 } 19 } 20 if IsNaN(value) { 21 value = float64(0) 22 } 23 half := 0.5 24 if math.Signbit(value) { 25 // 如果是负值, 半数用-0.5 26 half = -0.5 27 } 28 n10 := math.Pow10(defaultDigits) 29 return math.Trunc((value+half/n10)*n10) / n10 30 }