我已经看过将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需要做什么?或者我该怎么做才能获得类似的结果?
答案 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