1
0
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:
Xargin 2017-07-04 22:28:24 +08:00
parent f245011c7d
commit 3f35bed884
2 changed files with 6 additions and 44 deletions

View File

@ -119,51 +119,13 @@ func (any *stringAny) ToUint64() uint64 {
}
func (any *stringAny) ToFloat32() float32 {
return float32(any.ToFloat64())
parsed, _ := strconv.ParseFloat(any.val, 32)
return float32(parsed)
}
func (any *stringAny) ToFloat64() float64 {
if any.val == "" {
return 0
}
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
parsed, _ := strconv.ParseFloat(any.val, 64)
return parsed
}
func (any *stringAny) ToString() string {

View File

@ -15,9 +15,9 @@ var floatConvertMap = map[string]float64{
`"false"`: 0,
"123": 123,
`"123true"`: 123,
`"123true"`: 0,
`"-123true"`: -123,
`"-123true"`: 0,
"0": 0,
`"0"`: 0,
"-1": -1,