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 }