[英]Converting string input to float64 using ParseFloat in Golang
我剛剛開始學習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)
}
問題是您嘗試解析"xx\\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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.