ユーニックス総合研究所

  • home
  • archives
  • c-double-ketasu

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

  • 作成日: 2022-07-07
  • 更新日: 2023-12-25
  • カテゴリ: C言語

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;  
}  

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

関連記事

目が覚めるC言語のdo-while文の使い方【ループ処理、初心者向け】
明快!C言語のcontinue文の使い方
君はまだC言語のdefineのすべてを知らない【マクロ、プリプロセス】
プログラミングのポインタをわかりやすく解説【C言語】
コードで見るC言語とC++の7つの違い

目が覚めるC言語のdo-while文の使い方【ループ処理、初心者向け】
明快!C言語のcontinue文の使い方
君はまだC言語のdefineのすべてを知らない【マクロ、プリプロセス】
プログラミングのポインタをわかりやすく解説【C言語】
コードで見るC言語とC++の7つの違い

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型の桁数を指定したい場合はけっこうよくありますよね。

🦝 < 実数で表現しよう

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