浮動小数点数を同等の文字列に変換するコードに取り組んでいます。たとえば、数値が 2.3456 の場合、文字列も 2.3456 にする必要があります (末尾のゼロなし)。
これら2つのリンクでstackoverflowを検索しました:
ただし、どちらも 1eX 形式または xE+0 形式での表現を要求する傾向があるため、トピックから少し外れています。
これは私の試みです:
#include<cstdio>
#include<cstdlib>
#include<vector>
#include<string>
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
vector<char> V;
string S;
int i=0;
float f=3.14156;
float x=f*1e6;
long long int y=(long long int)(x);
while(y)
{
V.push_back(y%10+'0');
y/=10;
}
reverse(V.begin(),V.end());
for(i=0;i<V.size()-6;i++)
{
S.push_back(V[i]);
}
S.push_back('.');
for(;i<V.size();i++)
S.push_back(V[i]);
i=S.size();
while(i--)
{
if(S[i]=='0')
S.erase(S.begin()+i);
else break;
}
cout<<S<<"\n";
//system("pause");
return 0;
}
ideone へのリンク: http://ideone.com/Z8wBD7
IEEE 754 浮動小数点表現標準 (char ポインターの型付けまたはその他の方法を使用) を効率的に活用し、定義済みのライブラリ関数を使用したり、ファイルからスキャンしたりせずに、そのような変換を達成する方法を知りたいです。