Golang 中将 Float64 类型打印为 int

令人惊讶的是,我找不到其他人有同样的问题;我尝试简单地在 Go 中初始化 float64 并打印它,然后尝试字符串转换并打印它。两种输出都不准确。


我已经尝试过使用许多分数,包括那些不能解析重复小数的分数,以及简单地写出浮点数并打印(例如,然后num := 1.5给出fmt.Println(num)输出1)。


package main


import (

    "fmt"

    "strconv"

)


func main() {

    var num float64

    num = 5/3

    fmt.Printf("%v\n", num)

    numString := strconv.FormatFloat(num, 'f', -1, 64)

    fmt.Println(numString)

}


预期的:


// Output:

1.66

1.66

实际的:


// Output:

1

1


函数式编程
浏览 145回答 1
1回答

慕尼黑的夜晚无繁华

Go 编程语言规范整数文字整数文字是表示整数常量的数字序列。浮点文字浮点文字是浮点常量的十进制表示形式。它有整数部分、小数点、小数部分和指数部分。整数和小数部分由小数组成;指数部分是 e 或 E 后跟一个可选的有符号十进制指数。整数部分或小数部分之一可以省略;小数点或指数之一可以被省略。算术运算符对于两个整数值 x 和 y,整数商 q = x / y 和余数 r = x % y 满足以下关系:x = q*y + r  and  |r| < |y|x / y 被截断为零。您使用整数文字和算术编写(x / y 截断为零):package mainimport (    "fmt"    "strconv")func main() {    var num float64    num = 5 / 3 // float64(int(5)/int(3))    fmt.Printf("%v\n", num)    numString := strconv.FormatFloat(num, 'f', -1, 64)    fmt.Println(numString)}游乐场:https://play.golang.org/p/PBqSbpHvuSL输出:11您应该使用浮点文字和算术来编写:package mainimport (    "fmt"    "strconv")func main() {    var num float64    num = 5.0 / 3.0 // float64(float64(5.0) / float64 (3.0))    fmt.Printf("%v\n", num)    numString := strconv.FormatFloat(num, 'f', -1, 64)    fmt.Println(numString)}游乐场:https://play.golang.org/p/Hp1nac358HK输出:1.66666666666666671.6666666666666667
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go