在Golang中以整型打印浮点64
令人惊讶的是,我找不到其他人有同样的问题;我试着简单地初始化Go中的float64并打印它,然后尝试字符串转换并打印它。两个结果都不准确 我尝试过使用许多分数,包括那些不解析为重复小数的分数,以及简单地写出浮点和打印(例如在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 整数文字是表示整数的数字序列 不
num:=1.5
thenfmt.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
你想解释一下吗?