wrapper/float.go

133 lines
2.4 KiB
Go
Raw Permalink Normal View History

2023-05-05 14:39:06 +08:00
// Package wrapper ...
//
// Description : wrapper ...
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2023-05-05 14:33
package wrapper
import (
"fmt"
"math"
)
// Float ...
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 14:33 2023/5/5
type Float float64
// ToFloat32 ...
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 14:36 2023/5/5
2023-05-08 17:15:32 +08:00
func (f Float) ToFloat32() Float32Result {
res := Float32Result{
Value: 0,
Err: nil,
}
2023-05-05 14:39:06 +08:00
if f > math.MaxFloat32 || f < math.SmallestNonzeroFloat32 {
2023-05-08 17:15:32 +08:00
res.Err = fmt.Errorf("float32 should between %v and %v", float32(math.SmallestNonzeroFloat32), float32(math.MaxFloat32))
return res
2023-05-05 14:39:06 +08:00
}
2023-05-08 17:15:32 +08:00
res.Value = float32(f)
return res
2023-05-05 14:39:06 +08:00
}
2023-05-16 11:56:51 +08:00
// ToFloat32Ptr ...
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 11:10 2023/5/16
func (f Float) ToFloat32Ptr() Float32PtrResult {
res := f.ToFloat32()
if nil != res.Err {
return Float32PtrResult{
Value: nil,
Err: res.Err,
}
}
return Float32PtrResult{
Value: &res.Value,
Err: nil,
}
}
2023-05-05 14:39:06 +08:00
// ToFloat64 ...
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 14:36 2023/5/5
2023-05-08 17:15:32 +08:00
func (f Float) ToFloat64() Float64Result {
res := Float64Result{
Value: 0,
Err: nil,
}
2023-05-05 14:39:06 +08:00
if f > math.MaxFloat64 || f < math.SmallestNonzeroFloat64 {
2023-05-08 17:15:32 +08:00
res.Err = fmt.Errorf("float32 should between %v and %v", float64(math.SmallestNonzeroFloat64), float64(math.MaxFloat64))
return res
2023-05-05 14:39:06 +08:00
}
2023-05-08 17:15:32 +08:00
res.Value = float64(f)
return res
2023-05-05 14:39:06 +08:00
}
2023-05-16 11:56:51 +08:00
// ToFloat64Ptr ...
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 11:11 2023/5/16
func (f Float) ToFloat64Ptr() Float64PtrResult {
res := f.ToFloat64()
if nil != res.Err {
return Float64PtrResult{
Value: nil,
Err: res.Err,
}
}
return Float64PtrResult{
Value: &res.Value,
Err: nil,
}
}
2023-05-05 14:39:06 +08:00
// ToString ...
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 14:38 2023/5/5
2023-05-08 17:15:32 +08:00
func (f Float) ToString() StringResult {
floatVal := f.ToFloat64()
if nil != floatVal.Err {
return StringResult{
Value: "",
Err: floatVal.Err,
}
}
return StringResult{
Value: fmt.Sprintf("%v", floatVal),
Err: nil,
2023-05-05 16:07:42 +08:00
}
2023-05-05 14:39:06 +08:00
}
2023-05-16 11:56:51 +08:00
// ToStringPtr ...
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 11:56 2023/5/16
func (f Float) ToStringPtr() StringPtrResult {
res := f.ToString()
if nil != res.Err {
return StringPtrResult{
Value: nil,
Err: res.Err,
}
}
return StringPtrResult{
Value: &res.Value,
Err: nil,
}
}