2014-09-27 2 views
-4

Я пишу простую программу миль в километр, где пользователь вводит мили, и программа показывает результат преобразования. Я проинструктирован использовать целые числа, и это то, что я написал:Оператор Divison в программе конверсии миль/километров

{Console.Write("Enter distance in miles"); 
string input1 = Console.ReadLine(); 
int number1 = Convert.ToInt32 (input1); 
int result1 = number1/0.65; 
Console.Write(number1 + "Miles is equal to " + result1 + "KM"); 
Console.ReadLine(); 

Однако, я получаю следующее сообщение об ошибке:

Cannot implicitly convert type 'double' to 'int'. An explicit conversion exists (are you missing a cast?)

кто может помочь и дайте мне знать, почему я m получить эту ошибку? Я полный новичок :)

ответ

1

Деление number1/0.65 является выражением типа double, даже когда number1 является int.

ошибка уже предлагает сделать тип-бросок, он выглядит следующим образом:

int result1 = (int) (number1/0.65); 
+0

Блестящий, спасибо Хенк :) –

1

В C#, целое число, деленное двойной возвращает двойной, и 0.65 является double буквальным. Таким образом, ваша строка int result1 = number1/0.65; пытается превратить двойной в целое число без явного приведения.

Быстрое решение, что является добавление явного приведения:

int result1 = (int)(number1/0.65); 

Но вы должны знать, что это будет эффективно отсечь десятичной (взять математический пол). Возможно, вы захотите обернуть это округлением для своего приложения.

int result1 = (int)Math.Round(number1/0.65); 
Смежные вопросы