返回

c++-是否存在`double`、`K` 类型的值,例如`K * K == 3.0`?

发布时间:2022-06-15 11:42:40 285
# golang

是否有类型的值double(IEEE 64位浮点/二进制64),K,以便K * K == 3.0? (无理数当然是“3的平方根”)

我试过:

static constexpr double Sqrt3 = 1.732050807568877293527446341505872366942805253810380628055806;
static_assert(Sqrt3 * Sqrt3 == 3.0);

但静态断言失败。

(我猜测舍入后的下一个更高或下一个更低的浮点可表示数字平方3.0?或者浮点文字的解析器是愚蠢的?或者它在 IEEE 标准中是可行的,但快速数学优化把它搞砸了? )

我认为数字是正确的:

$ python

>>> N = 1732050807568877293527446341505872366942805253810380628055806
>>> N * N
2999999999999999999999999999999999999999999999999999999999996\
607078976886330406910974461358291614910225958586655450309636
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(1)
按点赞数排序
用户头像