2010-08-24 30 views
6

Không có ngoại lệ được ném ra, chức năng chỉ dừng ở tuyên bố này:Convert.ToInt32 (float) thất bại khi cố gắng để chuyển đổi phao để Int32

int productQuantity = Convert.ToInt32("1.00"); 

và lợi nhuận.

Tôi đang làm gì sai để chuyển đổi phao này thành Int32?

Lưu ý: Tôi đang chạy trong một BackgroundWorkerThread.

+5

Đó là một chuỗi chứ không phải là phao. – NullUserException

+0

@NullUserException: Có, nhưng tôi đã chuyển đổi trước đó nếu nó chỉ là "1" không có số thập phân. –

Trả lời

8

Một ngoại lệ được ném trong trường hợp này, nó chỉ không được hiển thị trong trình gỡ lỗi. Chuỗi này không ở định dạng có thể chuyển đổi thành loại Int32 và do đó ném và ngoại lệ. Bạn có thể xác minh điều này bằng cách gói nó trong một khối try/catch nếu IDE không hợp tác.

Cách tiếp cận tốt nhất ở đây có thể là chuyển đổi chuỗi thành double và sau đó tự chuyển nó xuống một số int. Điều này không mở cửa cho việc mất dữ liệu do sự khác biệt chính xác. Nhưng với đầu vào của bạn ở định dạng kiểu nổi, điều này là không tránh khỏi nếu bạn muốn sản phẩm cuối cùng là một số int

+1

+1 điểm tốt về ngoại lệ không thể lướt qua, dễ quên! – Abel

0

FormatException Chuỗi đầu vào không đúng định dạng.

2

Một ngoại lệ được ném, chỉ để thấy nó, bạn phải kiểm tra thuộc tính RunWorkerCompletedEventArgs.Error trong trình xử lý sự kiện cho BackgroundWorker.RunWorkerCompleted.

Bất kỳ ngoại lệ nào được ném từ chuỗi của nhân viên nền khi công việc nền đang được thực hiện được gán cho thuộc tính đó.

6

Trước tiên, bạn cần chuyển đổi nó thành double và sau đó chuyển đổi thành Int32.

int productQuantity = Convert.ToInt32(double.Parse("1.00")); 
+0

với chuỗi Tôi khuyên bạn nên luôn luôn sử dụng 'TryParse', giúp bạn tiết kiệm rất nhiều rắc rối. – Abel

Các vấn đề liên quan