如何在Go中将表单输入作为Float64获取

huangapple go评论85阅读模式
英文:

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(&quot;/&quot;, root)
    http.HandleFunc(&quot;/result&quot;, result)
}

// handle the root url
func root(w http.ResponseWriter, r *http.Request) {
    fmt.Fprint(w, inputForm)
}

// root url html
const inputForm = `&lt;html&gt;
&lt;body&gt;
  &lt;form action=&quot;/result&quot; method=&quot;post&quot;&gt;
    &lt;div&gt;Number between 0 and 1
       &lt;input type=&quot;text&quot; name=&quot;anar&quot;&gt;
    &lt;/div&gt;
  &lt;/form&gt;
&lt;/body&gt;
&lt;/html&gt;
`

func result(w http.ResponseWriter, r *http.Request) {
    input := r.FormValue(&quot;anar&quot;)  // 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 := &quot;0.50&quot;
s, err := fmt.Sscanf(input, &quot;%f&quot;, &amp;userInput.Num)
newNum := userInput.Num + 0.25

huangapple
  • 本文由 发表于 2014年8月1日 07:15:41
  • 转载请务必保留本文链接:https://go.coder-hub.com/25070475.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定