如何在swift中将int转换为double?

时间:2014-10-27 01:22:15

标签: ios swift ios8

我已经看过将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 个答案:

答案 0 :(得分:33)

您可以使用Double()像这样投射

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

答案 1 :(得分: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被推断为Double

答案 2 :(得分: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]

答案 3 :(得分:-1)

float 转换为 Swift 中的整数。这样的基本强制转换不起作用,因为这些变量不是原语,与 Objective-C 中的浮动 ints 不同:

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