質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

2940閲覧

[C++] csvに出力した数値の小数部を「0」で埋めたい

zeze

総合スコア27

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

1クリップ

投稿2019/05/30 07:05

前提・実現したいこと

座標値をcsvに出力し、この値を用いてデータ解析を行っています。
統計量を求める際に、近い値どうしの減算をするので
小数部の桁数を揃える必要があります。

以下のようなcsvが大量にあるとします。
イメージ説明

コードで小数部3桁となるようにしていますが、
ファイルを開くとB4セルのように、小数部が2桁となっていて
「0」が表示されません。622.22 -> 622.220 にしたいのです。

Excelの設定で変えるしかないと思うのですが、
A4~D4セルから下までを変更するにはどうしたらよいでしょうか。

よろしくお願いいたします。

コード

void save_csv_result(  const std::string & filename, cv::Size imageSize, const std::vector<cv::Point2d> & srcCorners, const std::vector<cv::Point2d> & projectedCorners ) { std::ofstream ofs(filename); ofs << "imageWidth" << "," << "imageHeight" << std::endl; ofs << imageSize.width << "," << imageSize.height << std::endl; ofs << "x" << "," << "y" << "," << "reprojected_x" << "," << "reprojected_y" << std::endl; for (int i = 0; i < srcCorners.size(); i++) { // x,y,zメンバ: double型 ofs << std::fixed << std::setprecision(3) << srcCorners[i].x << "," << srcCorners[i].y << "," << projectedCorners[i].x << "," << projectedCorners[i].y << std::endl; } ofs.close(); }

動作環境

Windows10
Visual Studio 2017

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2019/05/30 07:09

エクセルの書式設定の問題では? いくらCSVのほうで0つけたところで、エクセルに読み込ませたらそれは無視されますぜ
yominet

2019/05/30 12:15

CSVは、「カンマで情報を区切っている」という汎用的なルールのもとにかかれた"テキストファイル"であり、 EXCELのためのファイル形式ではありません よって、EXCELの表示情報等は付加できません
Bull

2019/05/30 12:33

CSVでは皆さんがおっしゃる通り、エクセルの書式を変更することはできません。 C++ のプログラムからエクセルの書式を変更することはできなくはないのですが、そのようなことをしたいのですか? あるいは、エクセルのファイル (.xlsx) を直接作りたいとか。
ikadzuchi

2019/05/30 13:26

> 近い値どうしの減算をするので > 小数部の桁数を揃える必要があります。 理由になっていません。なぜ近い値どうしの減算のために桁数を揃えたいのかを説明してください。
pepperleaf

2019/05/30 14:28

ダブルクォートで括って文字列とし、数値出力形式を少数以下、3桁とする。 とすれば、見た目、期待通りとなる。
guest

回答1

0

ベストアンサー

showpointではいかが?

C++

1ofs << std::fixed << std::setprecision(3) << std::showpoint 2 << srcCorners[i].x << "," 3 << srcCorners[i].y << "," 4 << projectedCorners[i].x << "," 5 << projectedCorners[i].y << std::endl;

投稿2019/06/19 06:51

ds-kawasaki

総合スコア35

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問