【发布时间】:2026-02-09 04:40:01
【问题描述】:
浮点运算在 Go 中是如何工作的
游乐场link
package main
import "fmt"
func main() {
j := 1.021
fmt.Println(j)
k := j*1000
fmt.Println(k)
l := int(k)
fmt.Println(l)
}
Output:
1.021
1020.9999999999999
1020
我期待1021 被打印出来,但我得到了1020
【问题讨论】:
-
也许你的惊讶来自于忽略了 1.021 不完全是分数 1021/1000,而是最接近这个分数的可能浮点数……请阅读推荐使用浮点标记的文献。跨度>
-
谢谢。这说明了这一点。有趣的是,我不明白为什么我对这个问题投了反对票。我确实四处寻找并找不到明确的原因。不知何故,我认为这是 Go 特定的,虽然它看起来很通用。
-
@ThomasPadron-McCarthy 是的,是的。谢谢。有趣的是,该帖子获得了 811 个赞,而我的则为 -3。
-
更多解释在这里@@0.30000000000000004.com
标签: go floating-point floating-accuracy