40
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

c++ 浮動小数点数 表示方法

目次

  • fixed と setprecision で固定小数点表記の表示を自在に操る
  • scientific を用いて、指数表記の表示を自在に操る

fixed と setprecision で固定小数点表記の表示を自在に操る

メイン処理

std::fixed は小数部の桁数をより正確に指定したい場合には書式フラグです。fixedを使用しないと、setprecisionの指定した長さが整数部も含むことになります。
std::setprecision は入出力ストリームで浮動小数点型の桁数を指定出来るマニピュレータです。


#include <iomanip> // setprecisionを使用するのに必要
cout << std::fixed << std::setprecision(15) << y << endl;

サンプル

#include <iostream>
#include <iomanip>
using namespace std;

int main(){
  double y;
  y = 1.0 / 3.0;

  //普通にcout
  cout << y << endl;

  //小数点以下の長さを指定
  cout << fixed << setprecision(15) << y << endl;

  return 0;
}

出力結果

0.333333
0.333333333333333

scientific を用いて指数表記の表示を自在に操る

メイン処理

std::scientificは指数表記による出力を行いたい場合に使用します。cout << のあとに記載するだけで指数表記が表示できます。

cout << std::scientific << y << endl;
cout << std::scientific << std::setprecision(2) << y << endl;

サンプル

#include <iostream>
#include <iomanip>
int main(){
  double y;
  y = 31415.926535

  //単純に指数表記
  cout << scientific << y << endl;

  //指数表記 + 小数点以下長さ指定
  cout << scientific << setprecision(2) << y << endl;

  //指数表記 + 小数点以下長さ指定 + uppercaseでeの部分を大文字表記に
  cout << scientific << setprecision(2) << uppercase << y << endl;

  return 0;
}

出力結果

3.141592653500000e+04
3.14e+04
3.14E+04

まとめ

fixed で小数点以下だよと教えてあげる。 setprecision で小数点以下の長さを指定してあげる。
scientiicで指数表記を使うよと教えてあげる。

TAの採点の仕事が面倒くさい...

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
40
Help us understand the problem. What are the problem?