0

現在、C#とC++のアプリケーションを一致させようとしています。C ++側では、値がある場合、次のように言います。

const char* svalue = "554.1327";

私が使用するときsscanf

float x;
sscanf(svalue, "%f", &x);

xに等しくなり554.13269ます。つまり、同じ値に丸められる場合でも、「追加の」有効数字があります。float(このアプリケーションは、 7桁以上の有効数字を保持できる 別のタイプを使用していると思います。)

C++側を変更したくありません。別のC#アプリケーションでも同じことをしたいと思います。

たとえば、floatがある場合、23423.29それをに変換したいと思います23423.289。これはdouble(C#ではfloat有効数字が7桁以下であるため)、それをdouble文字列に変換します。

私はこれを行う方法を見つけることができないようです。何か案は?または、独自の関数を作成するか、C#側から同じC ++関数を呼び出す必要がありますか?

4

1 に答える 1

0

こんにちはあなたの問題の一時的な解決策があります

            Double d = 23423.29f;
        int a = 23423.29.ToString().Length;
        Console.WriteLine(d.ToString().Remove(++a));

結果を出す

23423.289
于 2012-08-29T08:59:41.800 に答える