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

Don*_*man 8 ios swift ios8

我已经看过将int转换为浮点数和其他类似答案的答案,但它们并没有完全符合我的要求.

我正在尝试创建一个基本程序,它使一个数字对它进行一些不同的计算,并将这些计算的结果加在一起.

对于其中一个计算,我创建了一个分段控制器,下面有3个不同的值

 var myValues: [Double] = [0.00, 1.00, 1.50]
 var myValue = [myValuesSegmentedController.selectedSegmentIndex]
Run Code Online (Sandbox Code Playgroud)

然后当选择其中一个值时,它会被添加到最终值.所有加在一起的值是双精度到2位小数.

var totalAmount = valueA + valueB + valueC + myValue
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是,swift不会让我在最后的计算中添加"myValue".它给了我错误:

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

要将该值更改为Double,我需要做什么?或者我该怎么做才能获得类似的结果?

Ama*_*dan 33

你可以Double()像这样投射它

var totalAmount = valueA + valueB + valueC + Double(myValue)
Run Code Online (Sandbox Code Playgroud)

  • 这不是演员; 它创造了一个双重 (5认同)
  • Int和double通过值发送,因此您每当读取/写入/分配变量时基本上都会创建一个Double (2认同)

Leo*_*bus 3

问题是您正在尝试添加一个数组而不是 Int,因此您甚至不需要转换任何内容,考虑到您的所有值都已经是 Doubles 并且您的索引实际上必须是 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)
Run Code Online (Sandbox Code Playgroud)

正确的应该是这样的:

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