【发布时间】:2013-08-11 00:14:56
【问题描述】:
我认为 double 和 float 之间的区别在于小数的精度。但是,我使用 double 和 float 得到了奇怪的结果,而且它们彼此并不接近。
第一段代码与浮点格式一起使用,产生正确的结果:
#include <stdio.h>
#define ABSOLUTE_VALUE(number) ( ((number) < 0) ? -(number) : (number) )
int main (void)
{
float number, absNumber;
printf ("What number do you want to check the absolute value for? : ");
scanf ("%f", &number);
absNumber = ABSOLUTE_VALUE(number);
printf ("The absolute value of %.2f is %.2f\n", number, absNumber);
return 0;
}
输出:
您要检查哪个数字的绝对值? :-3
-3.00 的绝对值为 3.00
第二段代码与双重格式一起使用会产生不正确的结果:
#include <stdio.h>
#define ABSOLUTE_VALUE(number) ( ((number) < 0) ? -(number) : (number) )
int main (void)
{
double number, absNumber;
printf ("What number do you want to check the absolute value for? : ");
scanf ("%d", &number);
absNumber = ABSOLUTE_VALUE(number);
printf ("The absolute value of %.2d is %.2d\n", number, absNumber);
return 0;
}
输出:
您要检查哪个数字的绝对值? :-3
-03的绝对值为2147344384
【问题讨论】:
标签: c floating-point double