Niedawno natknąłem się na sposób oceny wyrażenia w języku C# za pomocą metody obliczeniowej obiektu podlegającego walidacji. Oto fragment kodu:Wartość obliczeniowa DataTable jest zbyt duża lub zbyt mała dla typu Int32
string expression = "330200000*450000";
var loDataTable = new DataTable();
var loDataColumn = new DataColumn("Eval", typeof(double), expression);
loDataTable.Columns.Add(loDataColumn);
loDataTable.Rows.Add(0);
MessageBox.Show(((double)(loDataTable.Rows[0]["Eval"])).ToString());
Jeśli umieścisz prostego wyrażenia jak „300 * 2” to będzie działać, jednak wyrazem powrotu dużej liczby nie będzie działać, pojawia się komunikat:
"Wartość jest zbyt duża lub zbyt mała dla typu" Int32 "."
Próbowałem zmusić typ do podwojenia, ale z jakiegoś powodu błąd nadal wskazuje coś na typ Int32, który nie jestem pewien skąd pochodzi.
Mała dłoń w tej sprawie?
Na jakiej linii otrzymujesz wyjątek? W trzeciej lub szóstej linii? BTW: Dlaczego nie używasz długiego zamiast podwójnego? –
Otrzymuję błąd na linii czwartej: loDataTable.Columns.Add (loDataColumn); Zdecydowanie mógłbym użyć długiego, ale niczego nie zmienia. – Romain
Spróbuj wpisać liczby 3300000D i 450000D. Musisz zadeklarować podwójne, takie jak double myVal = 3D; Bez D jest liczbą całkowitą. – Sami