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  }