2

これが私がやっていることです:

if (oss.str() != sValue)

たとえば、次のことができます。

2000000000.0002000000000.0

これは同じ値ですが、同じ文字列ではありません。の最終的なオーバーフローをキャッチしようとしているので、文字列で比較する必要がありsValueます。

この場合、私はできる:

oss << std::setprecison(1) << std::fixed << value;

しかし、問題は次の場合と同じです。

2000000000.12000000000.123

どうすれば修正できますか?

前もって感謝します。

4

3 に答える 3

1

小数点以下の位置から開始し、2 組の比較を行います。各反復で 1 桁を解析して比較し、反対側に進みます。

于 2013-02-23T20:12:58.727 に答える
0

から strncmp() 関数を使用できます

   int strncmp(const char *s1, const char *s2, size_t n);

std::string の c_str() メソッドと n = min( s1.length(), s2.length() );

ブーストを使用すると、整数比較を使用する方が簡単です

boost::lexical_cast<int>(s1) == boost::lexical_cast<int>(s2)

std::string s1 の場合、s2 がその役割を果たします。

于 2013-02-23T19:54:32.360 に答える