gpt4 book ai didi

c++ - 如何确定 float 的上限和下限?

转载 作者:可可西里 更新时间:2023-11-01 17:40:27 24 4
gpt4 key购买 nike

我对下面的引述 (N3797, 3.9.1/8) 有疑问:

The value representation of floating-point types is implementation-defined.

据我所知,它在定义 float 的边界方面给予了实现完全的自由。它们在 template<class T> class numeric_format 中指定.例如,

#include <iostream>
#include <limits>

int main()
{
std::cout << "double_max = " << std::numeric_limits<double>().max() << std::endl;
std::cout << "double_min = " << std::numeric_limits<double>().min() << std::endl;
std::cout << "float_max = " << std::numeric_limits<float>().max() << std::endl;
std::cout << "float_min = " << std::numeric_limits<float>().min() << std::endl;
}

DEMO

我的问题是: float 的上限和下限可以任意高低,还是有限制? 纯 C 是否也为 float 提供一组实现定义的值?

我怀疑这取决于我们正在使用的架构。

最佳答案

内置类型的限制主要受硬件限制。 x64 CPU 通常使用 IEEE 754 FPA 标准(硬件协处理器)中定义的 float 据表示。

无论如何,事物在内部的表示和处理方式可能与您所说的不同

The value representation of floating-point types is implementation-defined

编译器通常了解底层目标系统(特别是指进行代码生成的后端),因此可以在 fp-arithmetic 提示时选择正确的指令集。

您始终可以定义自己管理物理资源的自定义数据类型。您所指的术语可能是 Arbitrary precision arithmetic (通常要慢得多,如果您的数据适合硬件提供的数据,您应该这样做)。

在特定情况下(例如,某些没有 F​​PU 可用或无法执行浮点运算的嵌入式单元)可能会使用仿真。虽然速度较慢,但​​更便宜(更少的晶体管)。

关于c++ - 如何确定 float 的上限和下限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26448637/

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