Bagaimana cara memeriksa apakah nilainya adalah float [tertutup]

Saya ingin memeriksa apakah nilai yang saya berikan adalah angka float. Saya memiliki sepotong kode yang memeriksa apakah itu string tertentu, atau nomor float. Jika tidak ada, maka berikan kesalahan. Ini kodenya:

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")
        }

Bagaimana cara memeriksa apakah data tersebut merupakan bilangan float?


person Melissa    schedule 11.07.2018    source sumber
comment
Kemungkinan duplikat Cara memeriksa tipe variabel saat runtime di Go bahasa   -  person Jacob Boertjes    schedule 11.07.2018


Jawaban (1)


Paket strconv

import "strconv" 

fungsi ParseFloat

func ParseFloat(s string, bitSize int) (float64, error)

ParseFloat mengonversi string s menjadi angka floating-point dengan presisi yang ditentukan oleh bitSize: 32 untuk float32, atau 64 untuk float64. Ketika bitSize=32, hasilnya masih bertipe float64, namun dapat dikonversi menjadi float32 tanpa mengubah nilainya.

Jika s terbentuk dengan baik dan mendekati bilangan floating point yang valid, ParseFloat mengembalikan bilangan floating point terdekat yang dibulatkan menggunakan pembulatan tidak bias IEEE754.

Kesalahan yang dikembalikan ParseFloat memiliki tipe konkret *NumError dan menyertakan err.Num = s.

Jika s tidak terbentuk dengan baik secara sintaksis, ParseFloat mengembalikan err.Err = ErrSyntax.

Jika s memiliki format yang baik secara sintaksis tetapi berjarak lebih dari 1/2 ULP dari bilangan floating point terbesar pada ukuran tertentu, ParseFloat mengembalikan f = ±Inf, err.Err = ErrRange.


Periksa kesalahan dari strconv.ParseFloat dan periksa apakah ada string yang kosong.

Misalnya,

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)
            }
        }
    }
}

Taman bermain: https://play.golang.org/p/4dNsMgRunFp

Keluaran:

Latitude: "40.7128"
Latitude: "gps"
Latitude: "neither"
Incorrect option: "neither"
Latitude: ""
Incorrect option: ""
person peterSO    schedule 11.07.2018