C 言語で数値を科学的に表示する

胡金庫 2023年10月12日
  1. 科学的記数法で%E フォーマット指定子を使用して数値を出力する
  2. 科学的記数法で%e フォーマット指定子を使用して数値を出力する
C 言語で数値を科学的に表示する

この記事では、C 言語で科学的記数法で数値を出力する方法に関する複数の方法を示します。

科学的記数法で%E フォーマット指定子を使用して数値を出力する

数値の科学的記数法は、簡潔な普遍的な形式で巨大な値と小さな値を表すために広く使用されています。つまり、各数値は、小数点の前の 1 と 10 の累乗で表されます。この表記は整数と実数の両方と数学的に互換性がありますが、printf 指定子%E は浮動小数点型を対象としています。文字 E と対応する記号の後に指数表現が続くことに注意してください。指数値がゼロの場合、表示される形式は 00 です。

#include <stdio.h>
#include <stdlib.h>

int main(void) {
  float n1 = 15000000;
  float n2 = -15000000;
  double n3 = 25.2132;
  double n4 = 0.00001302;

  printf("n1 (%%f) - %f: \n", n1);
  printf("n1 (%%E) - %E: \n", n1);

  printf("n2 (%%f) - %f: \n", n2);
  printf("n2 (%%E) - %E: \n", n2);

  printf("n3 (%%f) - %f: \n", n3);
  printf("n3 (%%E) - %E: \n", n3);

  printf("n4 (%%f) - %f: \n", n4);
  printf("n4 (%%E) - %E: \n", n4);

  exit(EXIT_SUCCESS);
}

出力:

n1 (%f) - 15000000.000000:
n1 (%E) - 1.500000E+07:
n2 (%f) - -15000000.000000:
n2 (%E) - -1.500000E+07:
n3 (%f) - 25.213200:
n3 (%E) - 2.521320E+01:
n4 (%f) - 0.000013:
n4 (%E) - 1.302000E-05:

科学的記数法で%e フォーマット指定子を使用して数値を出力する

または、%e 形式指定子は、表示される文字が-[-]d.ddde±dd の形式で小文字になることを除いて、前の例と同じ機能を備えています。現在、%e%E の両方のフォーマット指定子は、表示する場所の数を示すために、その右側に小数点と整数を含めることができます。ユーザーが精度の整数を指定しない場合、自動的に 6 桁に設定されます。次のコードサンプルに示すように、負の浮動小数点数は、通常の 10 進表記として符号記号を取得します。

#include <stdio.h>
#include <stdlib.h>

int main(void) {
  float n1 = 15000000;
  float n2 = -15000000;
  double n3 = 25.2132;
  double n4 = 0.00001302;

  printf("n1 (%%f) - %f: \n", n1);
  printf("n1 (%%.2e) - %.2e: \n", n1);

  printf("n2 (%%f) - %f: \n", n2);
  printf("n2 (%%.1e) - %.1e: \n", n2);

  printf("n3 (%%f) - %f: \n", n3);
  printf("n3 (%%.2e) - %.2e: \n", n3);

  printf("n4 (%%f) - %f: \n", n4);
  printf("n4 (%%.1e) - %.1e: \n", n4);

  exit(EXIT_SUCCESS);
}

出力:

n1 (%f) - 15000000.000000:
n1 (%.2e) - 1.50e+07:
n2 (%f) - -15000000.000000:
n2 (%.1e) - -1.5e+07:
n3 (%f) - 25.213200:
n3 (%.2e) - 2.52e+01:
n4 (%f) - 0.000013:
n4 (%.1e) - 1.3e-05:
著者: 胡金庫
胡金庫 avatar 胡金庫 avatar

DelftStack.comの創設者です。Jinku はロボティクスと自動車産業で8年以上働いています。自動テスト、リモートサーバーからのデータ収集、耐久テストからのレポート作成が必要となったとき、彼はコーディングスキルを磨きました。彼は電気/電子工学のバックグラウンドを持っていますが、組み込みエレクトロニクス、組み込みプログラミング、フロントエンド/バックエンドプログラミングへの関心を広げています。

LinkedIn Facebook