【发布时间】:2016-08-04 21:48:31
【问题描述】:
我刚开始学习 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)
}
【问题讨论】:
-
func main(){ fmt.Println("\n\nThis program will convert feet to meters for you!\n") feet := "35" feetFloat, _ := strconv.ParseFloat(feet, 64) meters := feetToMeters(feetFloat) fmt.Printf("%v feet converted to meters give you %v meters",feetFloat,meters) }我对此进行了修改,它给了我正确的答案。问题应该出在读者身上。如果你fmt.Println(feet)会发生什么? -
处理 reader.ReadString 和 strconv.ParseFloat 返回的错误。这些错误可能会提供有关该问题的一些见解。
-
谢谢@jonathanGB,我现在意识到它也在打印一个换行符。
-
@XyMcXface 谢谢你的建议。接下来我将不得不学习处理错误以避免进一步的头痛!
标签: go parsefloat