英文:
How to Get Form Input as Float64 in Go
问题
我有一个使用Go构建的Web表单。用户输入一个数字,然后我需要对该数字进行一些数学运算。似乎使用http包的所有方法都将输出作为字符串。
我该如何对用户输入进行简单的数学运算?
以下是我基本的代码:
func init() {
http.HandleFunc("/", root)
http.HandleFunc("/result", result)
}
// 处理根URL
func root(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, inputForm)
}
// 根URL的HTML
const inputForm = `<html>
<body>
<form action="/result" method="post">
<div>Number between 0 and 1
<input type="text" name="anar">
</div>
</form>
</body>
</html>
`
func result(w http.ResponseWriter, r *http.Request) {
input := r.FormValue("anar") // FormValue始终是字符串
// 将数字添加到输入
newNum := input + 0.25
// 输出结果的内容
}
你可以使用strconv
包将字符串转换为数字,然后进行数学运算。在这种情况下,你可以使用strconv.ParseFloat
函数将输入转换为浮点数,然后进行加法运算。修改result
函数如下:
import "strconv"
func result(w http.ResponseWriter, r *http.Request) {
input := r.FormValue("anar") // FormValue始终是字符串
// 将字符串转换为浮点数
num, err := strconv.ParseFloat(input, 64)
if err != nil {
// 处理转换错误
// 输出错误消息或采取其他操作
return
}
// 将数字添加到输入
newNum := num + 0.25
// 输出结果的内容
}
这样,你就可以对用户输入进行简单的数学运算了。
英文:
I have a webform built using Go. Users enter a number, then I need to do some math on that number. It seems like all methods using http package use strings as the output.
How can I do simple math on the user input?
Here is the basic code I have:
func init() {
http.HandleFunc("/", root)
http.HandleFunc("/result", result)
}
// handle the root url
func root(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, inputForm)
}
// root url html
const inputForm = `<html>
<body>
<form action="/result" method="post">
<div>Number between 0 and 1
<input type="text" name="anar">
</div>
</form>
</body>
</html>
`
func result(w http.ResponseWriter, r *http.Request) {
input := r.FormValue("anar") // FormValue is always string
// add number to input
newNum := input + 0.25
// stuff to output result
}
答案1
得分: 3
将输入首先转换为浮点数,使用strconv.ParseFloat
函数。
fval, err := strconv.ParseFloat(input, 64)
if err != nil {
log.Println(err)
//处理错误
}
newNum = fval + 0.25
英文:
Convert the input to a float first using strconv.ParseFloat
fval, err := strconv.ParseFloat(input, 64)
if err != nil {
log.Println(err)
//do something about it
}
newNum = fval + 0.25
答案2
得分: 1
一个朋友刚刚用 fmt 包给我提供了这个答案。我想我也可以分享一下。
type userInput struct {
Num float64
}
input := "0.50"
s, err := fmt.Sscanf(input, "%f", &userInput.Num)
newNum := userInput.Num + 0.25
英文:
A friend just gave me this answer using fmt package. I thought I would share it too.
type userInput struct {
Num float64
}
input := "0.50"
s, err := fmt.Sscanf(input, "%f", &userInput.Num)
newNum := userInput.Num + 0.25
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论