38 lines
692 B
Go
38 lines
692 B
Go
// Copyright (c) 2024-2026 Celestino Amoroso (celestino.amoroso@gmail.com).
|
|
// All rights reserved.
|
|
|
|
// util.go
|
|
package kern
|
|
|
|
func FixAnyNumber(v any) (fixed any) {
|
|
switch unboxed := v.(type) {
|
|
case int:
|
|
fixed = int64(unboxed)
|
|
case int8:
|
|
fixed = int64(unboxed)
|
|
case int16:
|
|
fixed = int64(unboxed)
|
|
case int32:
|
|
fixed = int64(unboxed)
|
|
case uint:
|
|
fixed = int64(unboxed)
|
|
case uint8:
|
|
fixed = int64(unboxed)
|
|
case uint16:
|
|
fixed = int64(unboxed)
|
|
case uint32:
|
|
fixed = int64(unboxed)
|
|
case uint64:
|
|
if unboxed <= MaxUint64Allowed {
|
|
fixed = int64(unboxed)
|
|
} else {
|
|
fixed = float64(unboxed)
|
|
}
|
|
case float32:
|
|
fixed = float64(unboxed)
|
|
default:
|
|
fixed = v
|
|
}
|
|
return
|
|
}
|