web-dev-qa-db-ja.com

Float to String形式指定子

私は文字列に変換したいいくつかの浮動小数点値を持っています、私は変換時に同じフォーマット、すなわち999.0000(float)-> 999.0000(String)を維持したいです。私の問題は、前の例のように、値が小数点の後にゼロの任意の数を含む場合、文字列に変換するときにそれらが取り除かれるため、実際に結果が999になります。

[〜#〜] msdn [〜#〜]toString()メソッドのフォーマット指定子を見ました。RoundTrip( 'R')指定子は、欲しいのですが、Single、Double、BigInt変数でのみサポートされています。フロート変数にこのようなフォーマット指定子はありますか??または、値をdoubleに変換する方が簡単ですか?

更新:明確にするために、末尾のゼロを保持する理由は、小数点以下の桁数を比較しているためです。つまり、小数点以下の桁数を2つの値で比較しています。たとえば、1.00と1.00000の小数点以下の桁数は異なります。私はそれが奇妙な要求であり、仕事のためであり、要求が高いところから来ていることを知っています。

更新2-3-11:

私はこれについて一生懸命考えていたので、txtファイルから数値を読み取ってからfloatとして解析し、プログラムを変更して文字列値が10進数か整数かを確認します。時間を無駄にしてすみませんが、これは非常に洞察力に富んでいました。

21
kingrichard2005

まず、 エティエンヌの言う 、C#のfloatisSingle。それはそのデータ型の単なるC#キーワードです。

だからあなたは間違いなくこれを行うことができます:

float f = 13.5f;
string s = f.ToString("R");

第二に、数回の「フォーマット」への言及がありました。数値には形式はなく、値はのみです。 文字列にはフォーマットがあります。これは私に不思議にさせます。あなたが持っているものはフォーマットを持っていますが、文字列ではないものは何ですか?私が考えることができる最も近いものはdecimalで、doesは独自の精度を維持します。ただし、単にdecimal.ToStringを呼び出すと、その場合に必要な効果が得られます。

あなたがしていることを正確に見ることができるようにいくつかのサンプルコードを含めてみてはいかがでしょうか。

27
Dan Tao

次の形式でToString()を使用します。

12345.678901.ToString("0.0000"); // outputs 12345.6789
12345.0.ToString("0.0000"); // outputs 12345.0000

フォーマットの最後に必要なだけゼロを入れてください。

52
Aliostad

次のように、フォーマット文字列をToStringメソッドに渡すことができます。

ToString("N4"); // 4 decimal points Number

さらに多くの修飾子を表示する場合は、 MSDN-標準の数値形式文字列 をご覧ください。

14
sprite

C#では、floatSystem.Singleのエイリアスです(intのようなビットはSystem.Int32のエイリアスです)。

4