2014-10-27 5 views
8

Я посмотрел ответы на конвертацию int в float и другие подобные ответы, но они не делают именно то, что я хочу.Как преобразовать int в double в swift?

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

Для одного из этих расчетов я создал сегментированный контроллер с 3 различными значениями ниже

var myValues: [Double] = [0.00, 1.00, 1.50] 
var myValue = [myValuesSegmentedController.selectedSegmentIndex] 

тогда, когда одна из этих величин определена, она добавляется к конечному значению. Все значения, добавленные вместе, равны двум знакам после запятой.

var totalAmount = valueA + valueB + valueC + myValue 

проблема, с которой я сталкиваюсь, заключается в том, что быстрота не позволит мне добавить «myValue» к тем окончательным расчетам. Это дает мне ошибку:

Swift Compiler Error. Cannot invoke '+' with an argument list of type '($T7, @lvalue [int])' 

Что нужно сделать, чтобы изменить это значение на Double? Или что я могу сделать, чтобы получить аналогичный результат?

+0

Я рекомендую вам прочитать: https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/ TheBasics.html # // apple_ref/doc/uid/TP40014097-CH5-XID_467 – Aggressor

ответ

2

Проблема заключается в том вы пытаетесь добавить массив вместо Int, поэтому Вам даже не нужно конвертировать ничего, если учесть, что все ваши ценности уже удвоила и ваш индекс фактически должен быть Int. Так

let myValues = [0.00, 1.00, 1.50] 
let myValue = [myValuesSegmentedController.selectedSegmentIndex] // your mistake is here, you are creating one array of integers with only one element(your index) 

Правильным было бы что-то вроде этих:

let myValues = [0.00, 1.00, 1.50] 
let totalAmount = myValues.reduce(0, combine: +) + myValues[myValuesSegmentedController.selectedSegmentIndex] 
+0

. Ваше решение является самым близким к тому, что я хочу. Но то, что я хочу сделать, это не добавить весь массив вместе, а выбрать ** один из этих значений из массива в myValue и добавить его в общую сумму переменной в конце. Не просто добавить индекс. –

+0

Вы уверены, что добавляю «индекс» в конце? –

33

Вы можете бросить его Double() как этот

var totalAmount = valueA + valueB + valueC + Double(myValue) 
+5

это не литье; он создает двойной код –

+2

Ints и doubles отправляются по значению, поэтому вы в основном создаете Double, когда вы читаете/записываете/назначаете переменную – Ciprian

-1

Чтобы преобразовать поплавок к целое в Swift. Базовая литье, как это не работает, потому что эти вары не примитивы, в отличие от плавает и Интс в Objective-C:

var float:Float = 2.2 
var integer:Int = float as Float 
3

Поставь это детская площадка:

var myValues: [Double] = [0.00, 1.00, 1.50] 
let valueA = 1 
let valueB = 2 
let valueC = 3 
var totalAmount = Double(valueA + valueB + valueC) + myValues[2] 
println(totalAmount) //output is 7.5 

valueA/B/C - все они определены как Int.

totalAmount выводится быть двойной

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