2009-04-21 17 views
25

Mã của tôi sẽ không biên dịch do lỗi bên dưới :C# Cuộc gọi không rõ ràng giữa các phương thức hoặc thuộc tính sau: 'System.Math.Round (double, int)' và 'System.Math.Round (thập phân, int)

cuộc gọi là mơ hồ giữa các phương thức hoặc thuộc tính sau: 'System.Math.Round (double, int)' và 'System.Math.Round (thập phân, int)

mã của tôi là

Math.Round(new FileInfo(strFilePath).Length/1024, 1) 

Làm cách nào để khắc phục sự cố này?

Cảm ơn

Trả lời

14

Vấn đề là bạn thực hiện một phép chia số nguyên (kết quả cũng trong một int) và một int có thể được ngầm chuyển đổi sang cả doubledecimal. Vì vậy, bạn cần phải chắc chắn rằng biểu thức kết quả trong một trong những; double có lẽ là những gì bạn muốn.

Math.Round(new FileInfo(strFilePath).Length/1024.0, 1) 
40
Math.Round(new FileInfo(strFilePath).Length/1024d, 1) 
+5

Đây là cách tốt hơn so với các câu trả lời được chấp nhận, bạn không nên mặc nhiên đúc sử dụng" 0,0" , sử dụng 'd' hậu tố là rõ ràng và ưa thích. – user275587

+1

Tốt hơn có, nhưng lời giải thích trong câu trả lời được chấp nhận là _why_ cực kỳ hữu ích. – jmgardn2

3
Math.Round((double) (new FileInfo(strFilePath).Length/1024), 1) 
+0

tại sao đây là số âm 1? Vui lòng giải thích cho mình bản nhạc tiêu cực vì vậy chúng tôi hiểu tại sao bạn làm điều này. Có vẻ hợp lý với tôi để chỉ cần đúc nó như ông đã làm. – PositiveGuy

+0

Nó không hoạt động – Anton

+0

Tôi không đồng ý với bỏ phiếu từ khi câu trả lời là chính xác nếu bạn giám sát sai lầm dễ mắc phải. Nhưng bạn đã cần phải đặt 'FileInfo mới (strFilePath) .Length/1024' trong ngoặc đơn để làm cho nó hoạt động. –

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