C言語のdouble型の桁数を指定して表示する

514, 2022-07-08

目次

C言語のdouble型の桁数を指定する

C言語ではdouble型を扱うことができます。
double型を使うと実数を表現することが可能です。

この記事ではdouble型の桁数を指定して表示する方法を解説します。
結論から言うと9桁の実数を小数点数2桁まで表示する場合は↓のようにコードを書きます。

#include <stdio.h>

int main(void) {
    double d = 1234.56789;

    printf("%09.2f\n", d);  // 001234.57

    return 0;
}

具体的に見ていきたいと思います。

関連記事


double型の変数の定義方法

double型の変数の定義は↓のように行います。

double 変数名 = 値;

たとえば1234.56789という実数をdouble型で定義する場合は↓のようにコードを書きます。

    double d = 1234.56789;

↑の場合dというのが変数名です。
この変数dには1234.56789という値が保存されています。

printf関数でdouble型を出力する

double型の変数をprintf関数で出力する場合はフォーマットは「%f」を使います。

    double d = 1234.56789;

    printf("%f\n", d);  // 1234.567890

この「%f」のフォーマットですが表示する実数の桁数を指定することが可能です。
%fの間に数値を入れることで桁数を調整できます。

フォーマットは↓になります。

最小フィールド幅.精度

たとえば実数の小数点数以下を3桁で表示したい場合です。
1234.56789という実数なら小数点数以下3桁は1234.567までです。

    printf("%.3f\n", d);  // 1234.568

↑のようにフォーマットの精度を「%.3f」にすると小数点数以下3桁で出力できます。
小数点以下3桁まで表示するのですがその時に四捨五入されます。
元の値は1234.56789ですが3桁にすると1234.568になっています。

小数点数を含めた全体の桁数を指定したい場合は最小フィールド幅を指定します。
たとえば全体を12桁(ドットと小数点以下を含めて)で指定する場合は↓のようにします。

    printf("%12.3f\n", d);
    printf("%12.4f\n", d);
    printf("%12.5f\n", d);
    printf("%12.6f\n", d);
    printf("%12.7f\n", d);

↑の出力結果は↓です。

    1234.568
   1234.5679
  1234.56789
 1234.567890
1234.5678900

全体の桁数を12桁にしていますので足りない分の左の桁は半角スペースで埋められます。
小数点以下が足りない場合は0で埋められます。

%12.3f」というフォーマットは「全体の桁数が12」で「小数点以下の桁数が3」という意味になります。
この場合小数点以下の桁数3は12桁の中に含まれているので注意が必要です。
また全体の桁数12にはドット(.)も含まれています。

最小フィールド幅の頭に0をつけると半角スペースではなく0埋めされます。

    printf("%012.3f\n", d);  // 00001234.568

snprintfでdouble型を文字列にする

snprintf関数を使うとdouble型を文字列にすることができます。
snprintf関数は↓のような関数です。

#include <stdio.h>

int sprintf(バッファ, バッファサイズ, 書式, 引数...);

一般的にはchar型の配列をバッファに指定することが多いです。
↓のように使います。

#include <stdio.h>

int main(void) {
    double d = 12.345;
    char buf[100];

    snprintf(buf, sizeof buf, "%08.2f", d);

    printf("buf[%s]\n", buf);  // buf[00012.35]

    return 0;
}

double型のバイトサイズ

ちなみにdouble型のバイト数は↓になります。

#include <stdio.h>

int main(void) {
    printf("%ldバイト\n", sizeof(double));  // 8バイト

    return 0;
}

おわりに

今回はC言語のdouble型の桁数を指定して表示する方法を解説しました。
double型の桁数を指定したい場合はけっこうよくありますよね。

(^ _ ^)

実数で表現しよう

(・ v ・)

小数点数以下の世界へようこそ



この記事のアンケートを送信する