gpt4 book ai didi

c++ - float 和 double (C++) 的实际最小/最大值是多少

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

我已阅读关于使用“FLT_MIN”和“FLT_MAX”值作为 float 的建议。每当我这样做时,codeblocks 都会告诉我它的

max: 3.40282e+038 min: 1.17549e-038

不知道这意味着什么我试图获得真正的值(value)并得到

max: 47.2498237715 min: -34.8045265148

...但是这些并没有澄清事情。

这是我的代码片段

   char c;         // reserve: 1 byte, store 1 character (-128 to 127)
int i; // reserve: 4 bytes, store -2147483648 to 2147483657
short int s; // reserve: 2 bytes, store -32768 to 32767
float f; // reserve: 4 bytes, store ?? - ?? (? digits)
double d; // reserve: 8 bytes, store ?? - ?? (? digits)
unsigned int u; //reserve: r bytes store 0 to 4294967295

c = 'c';
cout << c <<" lives at " << &c <<endl;

i = 40000;
cout << i <<" lives at " << &i <<endl;

s = 100;
cout << s <<" lives at " << &s <<endl;

f = 10.1;
cout << f <<" lives at " << &f <<endl;

d = 10.102;
cout << d <<" lives at " << &d <<endl;

u = 1723;
cout << u <<" lives at " << &u <<endl;

在代码片段中,我们可以清楚地看到 short int 的最小值-最大值,例如 -32768 - 32767。这些是可以理解的适当值,但对于 float 和 int,实际值并不明确。

最佳答案

好的。使用我从这里学到的东西(感谢大家)和网络的其他部分,我写了一个关于两者的简洁的小总结,以防我遇到另一个这样的问题。

在 C++ 中,有两种表示/存储十进制值的方法。

花车和 double

float 可以存储以下值:

  • -340282346638528859811704183484516925440.0000000000000000 最低 float
  • 340282346638528859811704183484516925440.0000000000000000 最大 float

double 可以存储以下值:

  • -179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.0000000000000000 Double lowest

  • 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368.0000000000000000 Double max

Float 的精度允许它存储最多 9 位数的值(7 位实数,+2 从十进制到二进制的转换)

Double,顾名思义,可以存储两倍于 float 的精度。它最多可以存储 17 位数字。 (15位实数,+2十进制转二进制)

例如

     float x = 1.426;
double y = 8.739437;

小数与数学

由于 float 可以携带 7 个 real 小数,而 double 可以携带 15 个 real 小数,因此在执行计算时将它们打印出来是一种适当的方法必须使用。

例如

包括

typedef std::numeric_limits<double> dbl; 
cout.precision(dbl::max_digits10-2); // sets the precision to the *proper* amount of digits.
cout << dbl::max_digits10 <<endl; // prints 17.
double x = 12345678.312;
double a = 12345678.244;
// these calculations won't perform correctly be printed correctly without setting the precision.


cout << endl << x+a <<endl;

示例 2:

typedef std::numeric_limits< float> flt;
cout.precision(flt::max_digits10-2);
cout << flt::max_digits10 <<endl;
float x = 54.122111;
float a = 11.323111;

cout << endl << x+a <<endl; /* without setting precison this outputs a different value, as well as making sure we're *limited* to 7 digits. If we were to enter another digit before the decimal point, the digits on the right would be one less, as there can only be 7. Doubles work in the same way */

此描述的准确度如何?混淆时可以作为标准吗?

关于c++ - float 和 double (C++) 的实际最小/最大值是多少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48630106/

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