1

以下のコードを使用して、指数数を文字列に変換しています。部分的に機能しています。これを行うのを手伝ってください。

これは私の指数です 4.00658E+16 //テキスト形式で '40065812120130567'

以下のコードは、この数値を 40065812120130600 に変換します。最後の 2 桁が変換されない場合があります。この問題を解決するために私を助けてください。

 decimal device;
 string dvc_id = Convert.ToString(dt.Rows[i][4]);//dt.Rows[i][4]

 decimal.TryParse(dvc_id, NumberStyles.Any, CultureInfo.InvariantCulture, out device);
 dvc_id = device.ToString();
4

3 に答える 3

1

あなたが使用しているとあなたが言う番号4.00658121201306E+16は、と同じではありません40065812120130567。指数形式では数値の一部として最後の 2 桁がないため、最後の 2 桁は削除されます。

最後の 2 桁は、その番号にはまったく保存されません。指数表記が行うことはすべて、本質的に小数点がどこにあるべきかを伝えることです。表示されるのは、値の精度に関して得られるものであり、プログラムに 6 桁以降の数字を与えていません。したがって、6 の後の数字は表示されません。

于 2013-06-22T04:42:26.913 に答える
0

以下のコードを試していただけますか

var num = Decimal.Parse("4.00658E+16", System.Globalization.NumberStyles.Float);
于 2013-06-22T04:25:01.370 に答える
0

推奨使用 BigInteger クラス:

var number = BigInteger.Parse("400658121201306000000000000");
于 2013-06-22T04:27:16.390 に答える