前提・実現したいこと
座標値を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
エクセルの書式設定の問題では?
いくらCSVのほうで0つけたところで、エクセルに読み込ませたらそれは無視されますぜ
CSVは、「カンマで情報を区切っている」という汎用的なルールのもとにかかれた"テキストファイル"であり、
EXCELのためのファイル形式ではありません
よって、EXCELの表示情報等は付加できません
CSVでは皆さんがおっしゃる通り、エクセルの書式を変更することはできません。
C++ のプログラムからエクセルの書式を変更することはできなくはないのですが、そのようなことをしたいのですか?
あるいは、エクセルのファイル (.xlsx) を直接作りたいとか。
> 近い値どうしの減算をするので
> 小数部の桁数を揃える必要があります。
理由になっていません。なぜ近い値どうしの減算のために桁数を揃えたいのかを説明してください。
ダブルクォートで括って文字列とし、数値出力形式を少数以下、3桁とする。
とすれば、見た目、期待通りとなる。
回答1件
あなたの回答
tips
プレビュー