github.com/wfusion/gofusion@v1.1.14/common/utils/number.go (about)

     1  package utils
     2  
     3  import (
     4  	"math"
     5  	"strconv"
     6  	"strings"
     7  )
     8  
     9  func DecimalPlaces(num float64) int {
    10  	str := strconv.FormatFloat(num, 'f', -1, 64)
    11  	if i := strings.LastIndex(str, "."); i >= 0 {
    12  		return len(str[i+1:])
    13  	}
    14  	return 0
    15  }
    16  
    17  func IntNarrow(num int) (result any) {
    18  	IfAny(
    19  		func() bool { result = int8(num); return IsInRange(num, math.MinInt8, math.MaxInt8) },
    20  		func() bool { result = int16(num); return IsInRange(num, math.MinInt16, math.MaxInt16) },
    21  		func() bool { result = int32(num); return IsInRange(num, math.MinInt32, math.MaxInt32) },
    22  		func() bool { result = int64(num); return IsInRange(num, math.MinInt64, math.MaxInt64) },
    23  	)
    24  	return
    25  }
    26  
    27  func UintNarrow(num uint) (result any) {
    28  	IfAny(
    29  		func() bool { result = uint8(num); return IsInRange(num, 0, math.MaxUint8) },
    30  		func() bool { result = uint16(num); return IsInRange(num, 0, math.MaxUint16) },
    31  		func() bool { result = uint32(num); return IsInRange(num, 0, math.MaxUint32) },
    32  		func() bool { result = uint64(num); return IsInRange(num, 0, math.MaxUint64) },
    33  	)
    34  	return
    35  }