在Golang中以整型打印浮点64

在Golang中以整型打印浮点64,go,types,floating-point,strconv,Go,Types,Floating Point,Strconv,令人惊讶的是,我找不到其他人有同样的问题;我试着简单地初始化Go中的float64并打印它,然后尝试字符串转换并打印它。两个结果都不准确 我尝试过使用许多分数,包括那些不解析为重复小数的分数,以及简单地写出浮点和打印(例如num:=1.5thenfmt.Println(num)给出输出1) 期望值: // Output: 1.66 1.66 // Output: 1 1 实际值: // Output: 1.66 1.66 // Output: 1 1 整数文字是表示整数的数字序列 不

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

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

期望值:

// Output:
1.66
1.66
// Output:
1
1
实际值:

// Output:
1.66
1.66
// Output:
1
1

整数文字是表示整数的数字序列 不变的

浮点字面值是一个 浮点常量。它有一个整数部分,一个小数点,一个 分数部分和指数部分。整数和小数部分 由十进制数字组成;指数部分是一个e或e后跟一个 可选带符号的十进制指数。整数部分或 小数部分可以省略;小数点之一 指数可以省略

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

x = q*y + r  and  |r| < |y|
游乐场:

输出:

1
1
1.6666666666666667
1.6666666666666667

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

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)
}
游乐场:

输出:

1
1
1.6666666666666667
1.6666666666666667

你想解释一下吗?