web-dev-qa-db-ja.com

C#で文字列をフロートに変換する

"41.00027357629127"のような文字列を変換していますが、使用しています。

Convert.ToSingle("41.00027357629127");

または

float.Parse("41.00027357629127");

これらのメソッドは4.10002732E + 15を返します。

私がフロートに変換するとき、私は "41.00027357629127"が欲しいです。この文字列は同じでなければなりません...

85
Mehmet

あなたのスレッドのロケールは、小数点が "。"ではなく "、"であるロケールに設定されています。

これを使ってみてください。

float.Parse("41.00027357629127", CultureInfo.InvariantCulture.NumberFormat);

ただし、floatはその桁数の精度を保持できないことに注意してください。そのためには、doubleまたはDecimalを使用する必要があります。

199
Matthew Watson

まず、デバッガに表示されるfloat番号の表示です。 実数値はほぼ正確です(可能な限り)。

注意:浮動小数点数と文字列を扱うときは、常に常にCultureInfo の情報を使用してください。

float.Parse("41.00027357629127",
      System.Globalization.CultureInfo.InvariantCulture);

これはほんの一例です。あなたのケースに合った文化を選択してください。

21
Tigran

次のものを使用できます。

float asd = (float) Convert.ToDouble("41.00027357629127");
14
user4292249

Convert.ToDouble("41.00027357629127");を使う

Convert.ToDoubleドキュメント

7
Ozgur Dogus

float の精度は7桁です。あなたが全部のロットを保存したいならば、あなたは15-16桁を保つ double タイプを使う必要があります。フォーマットに関しては、 フォーマットが2倍になる についての投稿を見てください。そして、あなたは心配する必要があります C#の小数点について

4
jpe

あなたはdouble.Parse("41.00027357629127");することができます

1
ABH