Как преобразовать int в double в swift?
Я посмотрел ответы для преобразования int в поплавки и другие подобные ответы, но они не делают именно то, что я хочу.
Я пытаюсь создать базовую программу, которая принимает число, выполняет на нем различные вычисления, и результаты этих вычислений добавляются вместе в конце.
для одного из этих вычислений я создал сегментированный контроллер с 3 различными значениями ниже
var myValues: [Double] = [0.00, 1.00, 1.50]
var myValue = [myValuesSegmentedController.selectedSegmentIndex]
тогда, когда одно из этих значений выбранный, он добавляется к конечной стоимости. Все значения складываются в два раза до 2 знаков после запятой.
var totalAmount = valueA + valueB + valueC + myValue
проблема в том, что swift не позволит мне добавить "myValue" к этим окончательным вычислениям. Это дает мне ошибку:
Swift Compiler Error. Cannot invoke '+' with an argument list of type '($T7, @lvalue [int])'
что мне нужно сделать, чтобы изменить это значение на Double? Или что я могу сделать, чтобы получить подобный результат?
4 ответов
проблема в том, что вы пытаетесь добавить массив вместо 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]
поставить это на детской площадке:
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 выводится как Double
преобразование float до целое на Свифт. Основной кастинг как это не работает, потому что эти переменные не являются примитивами, в отличие от терки и ints на С:
var float:Float = 2.2
var integer:Int = float as Float