4

浮動小数点数を同等の文字列に変換するコードに取り組んでいます。たとえば、数値が 2.3456 の場合、文字列も 2.3456 にする必要があります (末尾のゼロなし)。

これら2つのリンクでstackoverflowを検索しました:

C++ は浮動小数点数を文字列に変換します

Double/Float を文字列に変換する

ただし、どちらも 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 ポインターの型付けまたはその他の方法を使用) を効率的に活用し、定義済みのライブラリ関数を使用したり、ファイルからスキャンしたりせずに、そのような変換を達成する方法を知りたいです。

4

2 に答える 2

-1
#include<sstream>
#include<string>
#include<iostream>
using namespace std;

int main()
{
    float val = 2.3456;
    std::stringstream sstr;
    sstr<<val;
    string val_str;
    sstr >> val_str;
    cout << val_str;
}
于 2013-08-31T12:36:23.187 に答える