double と float の違いは小数の精度だと思いました。ただし、 double と float を使用すると奇妙な結果が得られ、互いに近い場所ではありません。
コードの最初のセグメントは 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
コードの 2 番目のセグメントは double 形式で使用され、正しくない結果が生成されます。
#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