在 C 语言中,当一个浮点型数值被转换为其它浮点类型时,如果新类型能够准确表明待转换值,则该值保持不变。例如:
double d1 = 12.34;
float f1 = d1;
printf("f1 = %f
", f1);
由于浮点值 12.34 能够被 float 类型准确表明,因此值保持不变,这段代码的运行结果是:
f1 = 12.340000
如果被转换的浮点值在可表明范围值内但不能准确表明,则结果要么是最接近可表明值的稍大值,要么是最接近可表明值的稍小值,具体选择哪个值取决于实现定义的方式。
如果被转换的浮点值不在可表明浮点值范围以内,该行为是未定义的。例如:
double d2 = DBL_MAX;
float f2 = d2;
printf("f2 = %f
", f2);
注:使用 DBL_MAX 前必须包含头文件 float.h。
当把 double 类型的最大可表明值 DBL_MAX 转换为 float 类型值时,由于超出了 float 类型的可表明范围,因此该行为是未定义的。在 x64 架构 Ubuntu 系统中,这段代码的输出是:
f2 = inf
此外,一些隐式转换的结果可能会使用比要求的浮点型更宽的范围和精度来表明。
#C语言每日小知识##头条创作挑战赛#
© 版权声明
文章版权归作者所有,未经允许请勿转载。如内容涉嫌侵权,请在本页底部进入<联系我们>进行举报投诉!
THE END
















暂无评论内容