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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
アバター
KSGK
記事: 9
登録日時: 8年前

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

#1

投稿記事 by KSGK » 7年前

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;
}

アバター
Hiragi(GKUTH)
記事: 167
登録日時: 13年前
住所: 大阪府
連絡を取る:

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

#2

投稿記事 by Hiragi(GKUTH) » 7年前

少し調べた所、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/
あたりが参考になると思います。
だいがくせい!

アバター
KSGK
記事: 9
登録日時: 8年前

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

#3

投稿記事 by KSGK » 7年前

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

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

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

閉鎖

“C言語何でも質問掲示板” へ戻る