mirror of
https://github.com/json-iterator/go.git
synced 2025-04-23 11:37:32 +02:00
simplify float convert
This commit is contained in:
parent
f245011c7d
commit
3f35bed884
@ -119,51 +119,13 @@ func (any *stringAny) ToUint64() uint64 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (any *stringAny) ToFloat32() float32 {
|
func (any *stringAny) ToFloat32() float32 {
|
||||||
return float32(any.ToFloat64())
|
parsed, _ := strconv.ParseFloat(any.val, 32)
|
||||||
|
return float32(parsed)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (any *stringAny) ToFloat64() float64 {
|
func (any *stringAny) ToFloat64() float64 {
|
||||||
if any.val == "" {
|
parsed, _ := strconv.ParseFloat(any.val, 64)
|
||||||
return 0
|
return parsed
|
||||||
}
|
|
||||||
|
|
||||||
startPos := 0
|
|
||||||
endPos := 0
|
|
||||||
flag := 1
|
|
||||||
|
|
||||||
if any.val[0] == '+' || any.val[0] == '-' {
|
|
||||||
startPos = 1
|
|
||||||
}
|
|
||||||
|
|
||||||
if any.val[0] == '-' {
|
|
||||||
flag = -1
|
|
||||||
}
|
|
||||||
|
|
||||||
pointOccurCnt := 0
|
|
||||||
pointPos := -1
|
|
||||||
|
|
||||||
for i := startPos; i < len(any.val); i++ {
|
|
||||||
if any.val[i] >= '0' && any.val[i] <= '9' {
|
|
||||||
endPos = i + 1
|
|
||||||
} else if any.val[i] == '.' && pointOccurCnt == 0 {
|
|
||||||
endPos = i + 1
|
|
||||||
pointOccurCnt++
|
|
||||||
pointPos = i
|
|
||||||
} else {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if pointPos == endPos-1 {
|
|
||||||
endPos--
|
|
||||||
}
|
|
||||||
|
|
||||||
if endPos <= startPos {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
parsed, _ := strconv.ParseFloat(any.val[startPos:endPos], 64)
|
|
||||||
return float64(flag) * parsed
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (any *stringAny) ToString() string {
|
func (any *stringAny) ToString() string {
|
||||||
|
@ -15,9 +15,9 @@ var floatConvertMap = map[string]float64{
|
|||||||
`"false"`: 0,
|
`"false"`: 0,
|
||||||
|
|
||||||
"123": 123,
|
"123": 123,
|
||||||
`"123true"`: 123,
|
`"123true"`: 0,
|
||||||
|
|
||||||
`"-123true"`: -123,
|
`"-123true"`: 0,
|
||||||
"0": 0,
|
"0": 0,
|
||||||
`"0"`: 0,
|
`"0"`: 0,
|
||||||
"-1": -1,
|
"-1": -1,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user