栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为什么Go中的math.Nextafter(2,3)会增加0.0000000000000004而不是0.0000000000000001?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么Go中的math.Nextafter(2,3)会增加0.0000000000000004而不是0.0000000000000001?

使用java /scala将会得到完全相同的结果,该

math/#Nextafter
函数“返回朝Y X后的下一个表示值。”

Float64frombits(Float64bits(x) + 1)

如本主题所述

float64
不能表示所有16位数字。
例如,如果x = 0.12345678901234567,使用

math.Nextafter
,您可以看到附近的float64值为…
1234565,… 1234566和… 1234568

或者这个线程:

一些在基数10中可以精确表示的数字在基数2中不能完全表示。
例如,数字0.1(基数10)不能在基数2中精确表示。
就像0.1(基数3)一样,也不能精确表示。以10为底的十进制值:它是0.33333(永久重复)。

该golang问题4398说明:

const x1 = 1 - float64(1.00000000000000000001) // 0!

规范说,如果“
可由type的值表示”,则

x
可以将常量值转换为type 。 该值不能用表示;最接近的近似值为1。
T``x``T

1.00000000000000000001``float64



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/409621.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号