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