ページ 11

double型の小数点以下の0を消したいです。

Posted: 2016年4月05日(火) 00:30
by KSGK
C++でwin32コンソールアプリケーションを作っています。
double型変数をstring型に変換して表示したときに、下のコードだと「1.500000」と表示されますが、「1.5」の様に0を消して表示させたいです。
また、num=1.03だった場合は「1.03」、num=8.765だったなら「8.765」、の様に桁数が変わっても同じように0を消したいです。

どうすれば上手く消せるでしょうか。回答よろしくお願いします。

コード:

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

int main(){
	double num = 1.5;
	string str = to_string(num);
	cout << str << endl;
	system("pause");
	return 0;
}

Re: double型の小数点以下の0を消したいです。

Posted: 2016年4月05日(火) 01:06
by Hiragi(GKUTH)
少し調べた所、iomanipとsstreamの機能を使い実現できそうです

コード:

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

int main()
{
	double pi = 3.1;	//倍精度浮動小数点
	ostringstream sout;	//stringの強化版的な
	sout << setprecision(0) << pi;	//iomanipを使い書式指定
	string str = sout.str();		//string型に変換
	cout << str << endl;			//コンソールに出力
	system("pause");
	return 0;
}
ですが基本的にあまりわざわざ文字列にして出力する必要性をあまり感じません。

その他のマニピュレータに関しては
http://sla0.jp/2012/04/cpp%E3%81%AEiost ... %E8%A1%A8/
あたりが参考になると思います。

Re: double型の小数点以下の0を消したいです。

Posted: 2016年4月05日(火) 10:28
by KSGK
tjaファイルのBPMを任意倍に書き換えるプログラムを作っていたのですが、題のような疑問が浮かんだのでプログラムを省略して質問させていただきました。
書き換えるときにstringクラスの文字列操作関数を使っていたので、文字列に変換したかったのです。

上手くいきました。詳しくありがとうございます。勉強になります。

・解決を付け忘れていたため編集しました