首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么FLT_MIN等于零?

为什么FLT_MIN等于零?
EN

Stack Overflow用户
提问于 2010-03-27 11:28:43
回答 4查看 28.8K关注 0票数 29

limits.h指定了非浮点数学类型的限制,例如INT_MININT_MAX。这些值是可以使用int表示的最负和最正的值。

float.h中,有FLT_MINFLT_MAX的定义。如果您执行以下操作:

代码语言:javascript
运行
复制
NSLog(@"%f %f", FLT_MIN, FLT_MAX);

您将获得以下输出:

代码语言:javascript
运行
复制
FLT_MIN = 0.000000, FLT_MAX = 340282346638528859811704183484516925440.000000

正如您所期望的,FLT_MAX等于一个非常大的数字,但是为什么FLT_MIN等于零而不是一个非常大的负数呢?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-03-27 11:30:53

它实际上不是零,但如果您使用printfNSLog通过%f检查它,它可能看起来像零。

根据float.h (至少在MacOSX10.6.2中),FLT_MIN被描述为:

代码语言:javascript
运行
复制
/* Minimum normalized positive floating-point number, b**(emin - 1).  */

注意这句话中的正数:FLT_MIN指的是大于零的最小(规范化)数字。(存在小得多的非规范化数字)。

如果需要最小浮点数(包括负数),请使用-FLT_MAX

票数 58
EN

Stack Overflow用户

发布于 2010-03-27 11:45:31

'%f‘格式以固定格式打印6位小数。由于FLT_MIN要小得多,所以它在定点上看起来像零。如果你使用'%e‘或'%g’格式,你会得到一个更好的格式化答案。FLT_MAX也是如此。

代码语言:javascript
运行
复制
#include <float.h>
#include <stdio.h>
int main(void)
{
    printf("MIN = %f, MAX = %f\n", FLT_MIN, FLT_MAX);
    printf("MIN = %e, MAX = %e\n", FLT_MIN, FLT_MAX);
    return(0);
}


MIN = 0.000000, MAX = 340282346638528859811704183484516925440.000000
MIN = 1.175494e-38, MAX = 3.402823e+38
票数 15
EN

Stack Overflow用户

发布于 2019-05-04 01:13:18

每当您尝试打印标准头文件FLT_MIN的值时,都会得到0.000000(正如您在输出屏幕中看到的那样)。这实际上并不是一个错误。之所以会得到这个结果,是因为格式说明符%f。通常情况下,%f会在小数点后打印6位数字,但在这种情况下,带符号的负值非常小,因此您需要在小数点后打印大量数字。

我已经使用%.54f(与机器相关)来获取我的系统所需的- result(0.000000000000000000000000000000000000011754943508222875 )。

//在您的系统上检查

代码语言:javascript
运行
复制
#include<stdio.h>
#include<float.h>
int main()
{
    printf("Minimum signed float %.55f\n",FLT_MIN);
    printf("Minimum signed float %e\n",FLT_MIN);
    return 0;
}

//输出:-

//最小有符号浮点数0.0000000000000000000000000000000000000117549435082228750

//最小带符号浮点数1.175494e-038

我认为现在你已经很清楚为什么CHAR_MIN会得到0.000000,以及如何在相同格式的specifier.Though中获得正确的结果,你可以使用%e来获得更好的格式化结果。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2528039

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档