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