如何解决为什么在Golang中将1.0 / 3.0数字文字三倍相加得出恰好为1?
对于像我这样的初学者,StackOverflow答案here非常复杂。
在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。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。