渡された値が浮動小数点数かどうかを確認したい。特定の文字列であるか、浮動小数点数であるかをチェックするコードがあります。どちらでもない場合は、エラーを出します。これがコードです:
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")
}
データが浮動小数点数であるかどうかを確認するにはどうすればよいですか?
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 = ErrSyntaxを返します。
sが構文的に整形式であるが、指定されたサイズの最大の浮動小数点数から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: ""
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加