【问题标题】:How to calculate an int value and an float64 value in Golang?如何在 Golang 中计算 int 值和 float64 值?
【发布时间】:2021-10-12 00:37:09
【问题描述】:

在下面的代码中,我无法理解为什么声明 a = int(b) 没有将 b 的值转换为 int。另外,如果我们完全省略这一行也能达到相同的结果,那么这样做有什么意义呢?

package main

import "fmt"

func main() {
    a, b := 10, 5.5
    a = int(b)
    fmt.Println(float64(a) + b)
}

非常感谢!

【问题讨论】:

  • 这段代码的目的是什么?有了目的,就可以清理代码了。
  • int() 视为一个接收浮点数并返回整数的函数。为什么你期望它在内部改变b 的值/类型?
  • a = int(b) 会以 5 的值退出 a,希望此链接对您有所帮助:golangdocs.com/type-casting-in-golang

标签: go type-conversion


【解决方案1】:
package main

import "fmt"

func main() {
    a, b := 10, 5.5
    a = int(b)
    fmt.Println(float64(a) + b, a)
}

输出

10.5 5

似乎它正在将 b 转换为 int -> 5 -> a = a+b = 5 + 5.5 = 10.5

这里 b 被类型转换为 int 并将该值放入 a。

如果你需要改变 b 的值,你应该做b = int(b)

【讨论】:

  • b = int(b) 会导致如下错误:cannot use int(b) (type int) as type float64 in assignment
【解决方案2】:

与:

a=int(b)

a 变为 5。所以:

float64(a)+b

变为 10.5,因为 a=5b=5.5

【讨论】:

    【解决方案3】:

    a, b := 10, 5.5 在这一行中,10 的值被分配给a,默认类型为int5.5 的值被分配给b,默认类型为float64tour here

    然后a = int(b)这一行得到b的整数值,即5并分配给a。如果您不需要a 以前的值,那么这两行可以写成如下并得到相同的结果。

    package main
    
    import (
        "fmt"
    )
    
    func main() {
        b := 5.5
        a := int(b)
        fmt.Println(float64(a) + b) //Output: 10.5
    }
    

    fmt.Println(float64(a) + b)你不能对不同类型进行操作。这就是为什么您需要将a 转换为float64 并执行操作。如果您将其分配给另一个变量,结果也是 float64

    【讨论】:

      猜你喜欢
      • 2018-07-04
      • 2019-11-23
      • 2015-12-04
      • 1970-01-01
      • 2011-10-08
      • 1970-01-01
      • 2019-05-23
      • 2016-10-24
      • 1970-01-01
      相关资源
      最近更新 更多