如何强制除法成为Go中的浮点?

如何强制除法成为Go中的浮点?,go,command-line-arguments,floating-point-conversion,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 ) } 对于-A3和-B2命令行参数,输出为:%!f(int=1) 强制此除法为浮点的最佳/最优雅的方法是什么?您应该将除法结果强制

我有以下代码片段:

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 )
}
对于-A3和-B2命令行参数,输出为:
%!f(int=1)


强制此除法为浮点的最佳/最优雅的方法是什么?

您应该将除法结果强制转换为浮点。

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

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

如果希望进行整数除法,但结果是浮点,则将结果转换为
float32(a/b)
。在这种情况下,如果a是3,b是2,那么
float32(a/b)
将得到1.0。

有,因此您必须:


取决于你想要什么。另请查看
float64
——如果这会使您的船漂浮。

您的第二个选项不会产生浮点除法:它只是将整数除法的结果转换为浮点。@JamesHenstridge:OP读取“强制此除法为浮点”。对我来说,这可以读取任何一种方式,实际上读取整数除数到浮点。从示例代码中所知道的只是除法的结果应该是浮动的,以进入printf——因此两种方法都是可能的,因此我将两者都包括在内。转换其中一种方法(分子或分母)就足够了。
fmt.Printf("%f", float32(a)/float32(b))
fmt.Printf("%f", float32(a/b))