Cro*_*roo 7 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 )
}
Run Code Online (Sandbox Code Playgroud)
对于-a 3和-b 2命令行参数,输出为: %!f(int=1)
强迫这种划分成为浮点的最佳/最优雅的方法是什么?
bis*_*hop 10
Go中没有对变量进行隐式类型转换,因此必须转换为float:
fmt.Printf("%f", float32(a)/float32(b))
Run Code Online (Sandbox Code Playgroud)
要么
fmt.Printf("%f", float32(a/b))
Run Code Online (Sandbox Code Playgroud)
取决于你想要什么.还可以看看float64- 如果它漂浮在您的船上.
您必须首先将类型转换为浮点数。
一般来说,如果您有一些非浮点数字类型(例如ints)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。