C++で整数や小数の桁数を文字列に変換してからカウントする
ネットで検索してもなかなか載っていなかったので、自作しました。載っていないということはこれくらいできて当然ということなのでしょう(笑)。
ソースコード
考え方は単純で、まず入力された小数(または整数)を文字列に変換します。次に小数点の位置(’.’)を見つけてそれより前は整数部、それよりあとは小数部というように分けて桁数をカウントします。
#include <stdio.h>
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main(void)
{
double num = 32.456;
ostringstream stream;
stream << num;
string str = stream.str(); // 文字列に変換
int integer = 0; // 整数部の桁数
int decimal = 0; // 小数部の桁数
for (unsigned int i = 0; i < str.size(); i++)
{
if (str[i] == '.') // 小数のとき
{
integer = i; // 小数点の位置を保存
break;
}
}
if (integer == 0) // 整数のとき
{
integer = str.size();
}
else // 小数のとき
{
decimal = str.size() - integer - 1;
}
cout << "整数部の桁数:" << integer << endl;
cout << "小数部の桁数:" << decimal << endl;
return 0;
}