2015-07-14 6 views
-2

Я пришедший из C# и начал проверять быстры для прошивки и получил следующий вопрос ...целочисленного деление («Int» не конвертируется в «Double»)

Я просто хочу, чтобы преобразовать количество пенсов в фунты и нахождение проблемы с целым делением в быстром. Ниже приводится ошибка, которую я получаю.

enter image description here

То, что я не могу понять, это хорошо работает в линии 38 способом, но тот же erroring в строке 40 при использовании переменной.

Правок

decVal1 = 23.4, который является правильным. Почему decVal2 не может иметь то же самое?

+0

Вы пытаетесь сохранить Int как двойной. – Brian

+0

Я думаю, что вам нужно разделить на 100.0 –

+0

var decVal2: Double = Double (myNumber/100) – Max

ответ

4

В Swift вы не можете делать математику с различными типами (в данном случае Int и Double). Даже Int и UInt не являются взаимозаменяемыми.

Вы должны создать новые экземпляры соответствующего типа

var myNumber : Int = 2340 
var doubleDiv : Double = Double(myNumber)/100.0 

десятичные места в литералах не является необходимым в большинстве случаев, но понятнее использовать одни и ту же подпись.

2

Вы должны преобразовать Int в Double

var testInt : Int = 4 
var testDouble : Double = 333/222 
var testDouble2 : Double = Double(testInt)/222 

на testDouble компилятор непосредственно принимает 333 и 222 в два раза, но вы попытались разделить Int. Тип должен быть одинаковым для обоих.

С код:

var testInt : Int = 2340 
var testDouble : Double = 2340/100 
println(testDouble) 
var testDouble2 : Double = Double(testInt)/100 
println(testDouble2) 

Выход:

23,4

23,4

5

То, что я не могу понять, это хорошо работает в строке 38 путь, но один и тот же erroring в строке 40.

В строке 38, компилятор выводя тип значений, чтобы быть что удовлетворяет требованию decVal1 должно быть Double.

В строке 40 вы явно сообщаете компилятору, что myNumber - это int, что устраняет способность компилятора решить, что это что-то еще.

Смежные вопросы