Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Floating point 让机器epsilon启动的最简单方法_Floating Point_Go - Fatal编程技术网

Floating point 让机器epsilon启动的最简单方法

Floating point 让机器epsilon启动的最简单方法,floating-point,go,Floating Point,Go,让机器epsilon启动的最简单方法是什么?浮点数的其他方面,如精度、最小指数、最大指数、抖动等,又如何呢 我意识到对于不同的浮点类型(),有一个包含max和min的math/const包,但没有其他信息 我想知道的一个原因是验证我已经达到了给定计算的最大精度,机器可以这样做,这样我就不会过早退出或尝试更长的时间 另一个只是出于好奇 谢谢 编辑: 有趣的是,我从学校的一些笔记上看如何计算EpSelon手动为乐趣,这里是一个粗略的翻译从C++享受< /P> 编辑: 下面的评论(感谢您提供了一种更为

让机器epsilon启动的最简单方法是什么?浮点数的其他方面,如精度、最小指数、最大指数、抖动等,又如何呢

我意识到对于不同的浮点类型(),有一个包含max和min的math/const包,但没有其他信息

我想知道的一个原因是验证我已经达到了给定计算的最大精度,机器可以这样做,这样我就不会过早退出或尝试更长的时间

另一个只是出于好奇

谢谢

编辑:

有趣的是,我从学校的一些笔记上看如何计算EpSelon手动为乐趣,这里是一个粗略的翻译从C++享受< /P> 编辑: 下面的评论(感谢您提供了一种更为惯用的查找epsilon的方法):


使用
epsilon:=math.Nextafter(1,2)-1
–3月5日8:07

未定义,我发现问题在问题追踪器上解决为“按预期工作”:

建议您使用
math.Nextafter
导出需要的值

具体来说,公式是
math.Nextafter(1.0,2.0)-1.0
(第二个参数可以是大于1.0的任何数字)。

上述操作适用于任何二进制浮点类型(例如您所指的Go类型)

给出:

-1.1920929e-07
2.220446049250313e-16
取f32的绝对(无符号)值得到正确的机器ε


编辑:正如下面在SGJ的评论中提到的,这对十进制浮点类型不起作用,但据我所知,它们还没有在Golang中实现。

使用
epsilon:=math.Nextafter(1,2)-1
你知道这个公式是从哪里推导出来的吗?或者它为什么工作?(7/3)-(4/3)是通过无法正确表示的“奇怪”浮点数获得的。。。哪个-1应该给我们区别。。。我想?当然,请看这里的问题3:或者这里:但作为对你第二条评论的回答,是的,我想是的。不过也有一些例外,我无法让它与本机Python 3.6浮点(而不是numpy)一起工作,因为似乎有一些自动取整的功能来纠正这种类型的浮点奇怪。没有时间找到相关的Python文档进行检查。很高兴看到您的代码给出了与7/3-4/3-1相同的结果:)
-1.1920929e-07
2.220446049250313e-16