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

时间:2016-08-04 21:48:31

标签: go parsefloat

我刚开始学习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)
}

1 个答案:

答案 0 :(得分:9)

问题是您尝试解析"x.x\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