gpt4 book ai didi

c++ - 最小 float (最接近零)

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:18:15 25 4
gpt4 key购买 nike

我试图找到可以存储在单个精度 float 中的最小值(最接近零)。使用 <limits> header 我可以获得这个值,但是如果我把它变得更小, float 仍然可以容纳它并且它会给出正确的结果。这是一个测试程序,用 g++ 5.3.0 编译。

#include <limits>
#include <iostream>
#include <math.h>

using namespace std;

int main()
{
float a = numeric_limits<float>::max();
float b = numeric_limits<float>::min();

a = a*2;
b = b/pow(2,23);


cout << a << endl;
cout << b << endl;
}

如我所料,“a”给出无穷大,但“b”即使在将最小值除以 2^23 后仍保持良好结果,之后它给出 0。

给出numeric_limits<float>::min()的值是 2^(-126),我认为这是正确的答案,但为什么我的程序中的 float 保持这么小的数字?

最佳答案

std::numeric_limits::min 用于浮点类型给出可以在不损失精度的情况下表示的最小非零值。 std::numeric_limits::lowest 给出最小的可表示值。对于 IEEE 表示,这是一个次正规值(以前称为非正规化)。

关于c++ - 最小 float (最接近零),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34667932/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com