我认为 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