如何强制除法在Go中浮点?

时间:2013-12-13 16:28:10

标签: go command-line-arguments floating-point-conversion

我有以下代码段:

package main

import("fmt";"flag")

func main() {
    var a = flag.Int("a",0,"divident")
    var b = flag.Int("b",1,"divisor")
    flag.Parse()

    fmt.Printf("%f",*a / *b )
}

对于-a 3和-b 2命令行参数,输出为:%!f(int=1)

强制这种划分为浮动点的最佳/最优雅的方法是什么?

3 个答案:

答案 0 :(得分:10)

no implicit type casts for variables in Go,因此您必须convert to float

fmt.Printf("%f", float32(a)/float32(b))

fmt.Printf("%f", float32(a/b))

取决于你想要什么。还可以查看float64 - 如果漂浮你的船。

答案 1 :(得分:3)

您必须先将类型转换为浮点数。

通常,如果您有一些非浮点数字类型(例如int s)ab,为了获得浮点除法,您使用{{1} (或float32(a)/ float32(b)视情况而定)。这也适用于任何其他数字类型,如果要将浮点数视为整数或整数,因为复数转换操作数。在这种情况下,如果a为3且b为2,则float64将为1.5。

如果要完成整数除法,但结果是浮点数,则将结果转换为float32(a)/float32(b)。在这种情况下,如果a为3且b为2,则float32(a/b)将为您提供1.0。

答案 2 :(得分:-3)

你应该将你的除法结果转换为float