2016-12-12 4 views
4

文字列を10進数に変換する際に問題が発生しました。私のC#コードがexelファイルから次のデータを読み込んでいて、次のエラーが返されています。C#throwing例外入力文字列の変換エラーが無効な形式です

入力文字列が正しい形式 "-1.799999999999999E-2"ではありません。

この値は私のExcelの値ではわかりません。

例データ

-1.70152 
9.335628333 
-150.0145233 
39.159625 

C#コード

TestModel.lat = Convert.ToDecimal(c.CellValue.Text); 

正しいコンバージョンです。私は変換中に値を失いつつある。元の値をそのまま維持するためにinorderに変換するのに最適なデータタイプは何ですか?

あなたのアプローチがあることが必要
+2

例データを含めると、失敗する例が含まれています.... –

答えて

2

TestModel.lat = Decimal.Parse(c.CellValue.Text, NumberStyles.Float); 

さらに良いことに、あなたはDecimal.TryParseを使用する必要がありますし、InvariantCulture

decimal d = 0; 
Decimal.TryParse("1.2345E-02", System.Globalization.NumberStyles.Float, CultureInfo.InvariantCulture, out d); 

TestModel.lat = d; 
+0

@Jamiecこの場合はそうです。 –

+0

Linqpadのコードを実行します。 AllowExponentがスローします。 Float works –

+0

@Jamecあなたのコメントは、文化が不変であるとは思わない、TryParseバリアントを試してみてください。 – mybirthname

-3

1を指定する必要があります)オープンウルは 2をエクセル)、この値を持っている任意のセルをクリックしてください 3)セル - >書式セル - >一般を選択し、OKをクリックすると、元のvalue.doがすべてのセルに変わります。 4)今度はurコードでこのファイルを読むようにしてください