指数数値1.11111117E+9を変換しようとしています。これは実際には10桁の数値「1111111111」です。この指数数値をdecimal.TryParseメソッドを使用して変換しようとすると、最後の3桁がゼロになり、数値が「111111000」になります。これは、任意の10桁の数字で発生しています。
decimal amount;
decimal.TryParse("1.11111117E+9", NumberStyles.Any, null, out amount);
これは奇妙ですが、ここで何が問題なのか理解できません。誰かがこれの何が問題なのか教えてもらえますか?
編集: 誤解を招く質問でごめんなさい。ヘンリックが彼の答えで述べたように、まさに私が直面していることです。
float f = 1111111111;
string s = f.ToString();
decimal amount;
decimal.TryParse(s, NumberStyles.Any, null, out amount);
これは常に1111111000を返しますか?正しい値を取得するには、この問題に対処するにはどうすればよいですか?floatデータ型からDoubleまたはDecimalに変更しますか?それとも解決策ですか?