什么是最简单的方法,让机器感应器前进?浮点数的其他方面,如精度、最小指数、最大指数、摆动等怎么办?
我意识到,对于不同的浮点类型(http://golang.org/src/pkg/math/const.go),存在带有max和min的数学/const包,但没有其他信息。
我想知道的一个原因是为了验证我已经达到了给定计算的最大精度,这样机器就可以完成,这样我就不会提前退出,也不会尝试更长的时间。
另一个只是好奇。
谢谢
编辑:
为了好玩,我在学校的一些笔记中查阅了关于如何手工计算epsilon的有趣之处,下面是c++ http://play.golang.org/p/XOXwIdNfsa乐趣的粗略翻译。
编辑:下面的评论(谢谢你用一种更地道的方式找到epsilon):
使用epsilon := math.Nextafter(1, 2) - 1 游乐场 - 尼克·克雷格-伍德 Mar5 8:07
发布于 2014-03-04 23:59:32
它没有定义,我发现问题被解决为在问题跟踪器上“按预期工作”:
https://code.google.com/p/go/issues/detail?id=966
如果需要的话,建议使用math.Nextafter来获得值。
具体来说,公式是math.Nextafter(1.0,2.0)-1.0 (第二个参数可以是任何大于1.0的数字)。
发布于 2017-10-18 18:57:14

上面的内容适用于any 二进制浮点类型(例如,您所指的Go类型)。
package main
import "fmt"
func main() {
f32 := float32(7.)/3 - float32(4.)/3 - float32(1.)
fmt.Println(f32)
f64 := float64(7.)/3 - float64(4.)/3 - float64(1.)
fmt.Println(f64)
}给予:
-1.1920929e-07
2.220446049250313e-16获取f32的绝对(无符号)值将生成正确的机器ε。
编辑:正如SGJ在下面的评论中提到的,这并不适用于十进制浮点类型,但据我所知,它们还没有在Golang中实现。
https://stackoverflow.com/questions/22185636
复制相似问题