登录
首页 >  Golang >  Go问答

如何在 Golang 中将 1.0 除以 3.0 并相加 3 次以得到结果为 1?

来源:stackoverflow

时间:2024-03-22 21:06:30 109浏览 收藏

在 Golang 中,执行 `fmt.Println(1.0/3.0 + 1.0/3.0 + 1.0/3.0)` 却得到 1 的结果,令人费解。根据 Go 语言规范,常量表达式需要进行精确计算,这意味着编译器必须执行完整的实数运算。因此,`1.0/3.0` 的计算结果为 ⅓,而 `1.0/3.0 + 1.0/3.0 + 1.0/3.0` 的结果为 ⅓ + ⅓ + ⅓,即 1。

问题内容

对于像我这样的初学者来说,stackoverflow 的答案非常复杂。

在 golang 中执行以下代码行结果为 1

fmt.Println(1.0/3.0 + 1.0/3.0 + 1.0/3.0)

据我所知,1.0/3.0 结果为 0.3333333...无法准确存储,那么是什么导致了这个结果。

我不熟悉诸如处理器或cpu如何执行特定指令之类的低级事物。谁能给我一个简单的答案?


解决方案


根据 The Go Programming Language Specification,“常量表达式总是精确计算……”这意味着编译器(或其他实现)需要在计算常量表达式所需的范围内进行完整的实数运算。因此 1.0/3.0 + 1.0/3.0 + 1.0/3.0 的计算结果为 ⅓ + ⅓ + ⅓,当然是 1。

本篇关于《如何在 Golang 中将 1.0 除以 3.0 并相加 3 次以得到结果为 1?》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>