Gần đây tôi đã xem xét một cách để đánh giá biểu thức trong C#, bằng cách sử dụng phương pháp tính toán của một đối tượng có thể đặt dữ liệu. Dưới đây là một đoạn mã:Giá trị tính toán DataTable quá lớn hoặc quá nhỏ đối với loại 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());
Nếu bạn đặt một biểu thức đơn giản như "300 * 2" này sẽ làm việc, tuy nhiên một biểu thức trả về một số lượng lớn sẽ không làm việc, tôi nhận được thông báo:
"Giá trị quá lớn hoặc quá nhỏ đối với Loại 'Int32'."
Tôi đã cố buộc loại tăng gấp đôi, nhưng vì một lý do nào đó, lỗi vẫn trỏ đến thứ gì đó liên quan đến loại Int32 mà tôi không chắc nó đến từ đâu.
Một chút về điều đó?
Bạn nhận được ngoại lệ trên dòng nào? Trong dòng thứ 3 hoặc thứ 6? BTW: Tại sao bạn không sử dụng dài thay vì gấp đôi? –
Tôi gặp lỗi trên dòng thứ 4: loDataTable.Columns.Add (loDataColumn); Tôi chắc chắn có thể sử dụng lâu, nhưng nó không thay đổi bất cứ điều gì. – Romain
Hãy thử viết các số 3300000D và 450000D. Bạn cần khai báo gấp đôi như double myVal = 3D; Nếu không có D thì đó là một số nguyên. – Sami