我有以下代码段:
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)
强制这种划分为浮动点的最佳/最优雅的方法是什么?
答案 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)a
和b
,为了获得浮点除法,您使用{{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