124

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

Convert.ToSingle("41.00027357629127");

また

float.Parse("41.00027357629127");

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

フロートに変換するときは「41.00027357629127」が欲しいです。この文字列は同じである必要があります...

4

7 に答える 7

253

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

これを使用してみてください:

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

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

于 2012-06-26T08:01:07.957 に答える
27

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

注:浮動小数点数と文字列を処理するときは、常に CultureInfo情報を使用してください。

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

これは単なる例です。あなたのケースに適した文化を選択してください。

于 2012-06-26T07:40:47.500 に答える
25

以下を使用できます。

float asd = (float) Convert.ToDouble("41.00027357629127");
于 2014-11-25T15:05:42.927 に答える
9

使用するConvert.ToDouble("41.00027357629127");

Convert.ToDoubleドキュメンテーション

于 2012-06-26T07:39:37.470 に答える
4

floatの精度は7桁です。ロット全体を保持したい場合は、15〜16桁を保持するダブルタイプを使用する必要があります。フォーマットについては、doublesのフォーマットに関する投稿をご覧ください。また、C#の小数点について心配する必要があります。

于 2012-06-26T07:39:14.020 に答える
0

あなたはできるdouble.Parse("41.00027357629127");

于 2012-06-26T07:38:16.170 に答える
-2

より正確な値を取得するには、floatの代わりにdoubleを使用した解析を使用できます。

于 2012-06-26T07:41:07.667 に答える