如何强制除法成为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))