在 Golang 中使用 ParseFloat 将字符串输入转换为 float64

Converting string input to float64 using ParseFloat in Golang

我刚开始学习 Go,我正在尝试将字符串从标准输入转换为 float64,以便我可以对输入值执行算术运算。

无论输入值如何,输出 returns“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)
}

问题是您尝试解析 "x.x\n",例如:1.8\n。而这个 returns 错误: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