为了账号安全,请及时绑定邮箱和手机立即绑定

Golang 中将 Float64 类型打印为 int

Golang 中将 Float64 类型打印为 int

Go
函数式编程 2023-07-04 15:06:24
令人惊讶的是,我找不到其他人有同样的问题;我尝试简单地在 Go 中初始化 float64 并打印它,然后尝试字符串转换并打印它。两种输出都不准确。我已经尝试过使用许多分数,包括那些不能解析重复小数的分数,以及简单地写出浮点数并打印(例如,然后num := 1.5给出fmt.Println(num)输出1)。package mainimport (    "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.661.66实际的:// Output:11
查看完整描述

1 回答

?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

Go 编程语言规范

整数文字

整数文字是表示整数常量的数字序列。

浮点文字

浮点文字是浮点常量的十进制表示形式。它有整数部分、小数点、小数部分和指数部分。整数和小数部分由小数组成;指数部分是 e 或 E 后跟一个可选的有符号十进制指数。整数部分或小数部分之一可以省略;小数点或指数之一可以被省略。

算术运算符

对于两个整数值 x 和 y,整数商 q = x / y 和余数 r = x % y 满足以下关系:

x = q*y + r  and  |r| < |y|

x / y 被截断为零。


您使用整数文字和算术编写(x / y 截断为零):

package main


import (

    "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


输出:


1

1

您应该使用浮点文字和算术来编写:


package main


import (

    "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.6666666666666667

1.6666666666666667


查看完整回答
反对 回复 2023-07-04
  • 1 回答
  • 0 关注
  • 144 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信