簡體   English   中英

在Golang中使用ParseFloat將字符串輸入轉換為float64

[英]Converting string input to float64 using ParseFloat in Golang

我剛剛開始學習Go,我正在嘗試將字符串從標准輸入轉換為float64,因此我可以對輸入值執行算術運算。

無論輸入值如何,輸出都會返回“0英尺轉換為米為0米”。 在輸入上調用ParseFloat后,我無法弄清楚為什么值為零。

如果有人可以請指出我為什么會這樣,我會非常感激。

const conversion float64 = 0.3048

func feetToMeters (feet float64) (meters float64) {
  return feet * conversion
}

func main(){
  fmt.Println("\n\nThis program will convert feet to meters for you!\n")

  reader := bufio.NewReader(os.Stdin)
  fmt.Println("Enter feet value: \n")
  feet, _ := reader.ReadString('\n')

  feetFloat, _ := strconv.ParseFloat(feet, 64)

  meters := feetToMeters(feetFloat)

  fmt.Printf("%v feet converted to meters give you %v meters",feetFloat,meters)
}

問題是您嘗試解析"xx\\n" ,例如: 1.8\\n 這會返回一個錯誤: strconv.ParseFloat: parsing "1.8\\n": invalid syntax 您可以執行strings.TrimSpace函數或將feet[:len(feet)-1]為刪除\\n字符

使用strings.TrimSpace() (您需要導入strings包):

feetFloat, _ := strconv.ParseFloat(strings.TrimSpace(feet), 64)

feet[:len(feet)-1]

feetFloat, _ := strconv.ParseFloat(feet[:len(feet)-1], 64)

兩種情況下的輸出:

10.8 feet converted to meters give you 3.2918400000000005 meters

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM