2

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

4

5 に答える 5

0

マニュアルを読むと、"%d"は整数用です。"%lf"代わりに必要です。

同じように printf

于 2013-08-09T05:12:37.943 に答える