我想检查传递的值是否为浮点数。我有一段代码检查它是某个字符串还是浮点数。如果两者都不是,则给出一个错误。这是代码:
if sensorData.Passport.Geolocation.Latitude != "gps" && sensorData.Passport.Geolocation.Latitude != "internet" && sensorData.Passport.Geolocation.Latitude != "unknown" && sensorData.Passport.Geolocation.Latitude != //a float nmber{
fmt.Println("Incorrect option")
}
如何检查数据是否为浮点数?
答案 0 :(得分:3)
import "strconv"
func ParseFloat(s string, bitSize int) (float64, error)
ParseFloat使用以下命令将字符串s转换为浮点数: 由bitSize指定的精度:float32为32或float64为64。 当bitSize = 32时,结果仍为float64类型,但它将为 可转换为float32,而无需更改其值。
如果s格式正确且在有效的浮点数附近,则ParseFloat 返回使用IEEE754取整的最近的浮点数 无偏四舍五入。
ParseFloat返回的错误的具体类型为* NumError和 包括err.Num = s。
如果s在语法上不正确,则ParseFloat返回err.Err = 错误语法。
如果s的语法格式正确,但距离sULP大于1/2 ULP 给定大小的最大浮点数ParseFloat 返回f =±Inf,err.Err = ErrRange。
检查来自strconv.ParseFloat的错误,并检查空白string
。
例如,
package main
import (
"fmt"
"strconv"
)
func main() {
for _, latitude := range []string{"40.7128", "gps", "neither", ""} {
fmt.Printf("Latitude: %q\n", latitude)
if latitude != "gps" {
if _, err := strconv.ParseFloat(latitude, 10); err != nil || latitude == "" {
fmt.Printf("Incorrect option: %q\n", latitude)
}
}
}
}
游乐场:https://play.golang.org/p/4dNsMgRunFp
输出:
Latitude: "40.7128"
Latitude: "gps"
Latitude: "neither"
Incorrect option: "neither"
Latitude: ""
Incorrect option: ""