我有以下代码片段:package mainimport("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)强制此除法为浮点的最佳/最优雅的方法是什么?
2 回答
HUX布斯
TA贡献1876条经验 获得超6个赞
有没有隐式类型转换为围棋的变量,所以你必须转换为浮动:
fmt.Printf("%f", float32(a)/float32(b))
或者
fmt.Printf("%f", float32(a/b))
取决于你想要什么。还要检查一下float64
——如果这能让你的船漂浮。
肥皂起泡泡
TA贡献1829条经验 获得超6个赞
您必须先将类型转换为浮点数。
通常,如果您有一些非浮点数字类型(例如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。
- 2 回答
- 0 关注
- 517 浏览
添加回答
举报
0/150
提交
取消