整数除法('Int' 不能转换为 'Double')
Posted
技术标签:
【中文标题】整数除法(\'Int\' 不能转换为 \'Double\')【英文标题】:Integer Division ('Int' is not convertible to 'Double')整数除法('Int' 不能转换为 'Double') 【发布时间】:2015-07-14 15:44:36 【问题描述】:我来自 C# 并开始为 ios 快速检查并遇到以下问题...
我只想将便士金额转换为英镑,并快速发现整数除法的问题。以下是我遇到的错误。
我无法理解的是,它在第 38 行中可以正常工作,但在第 40 行中使用变量时会出现同样的错误。
编辑
decVal1 = 23.4 这是正确的。为什么 decVal2 不能有相同的?
【问题讨论】:
您正在尝试将 Int 存储为 Double。 我认为你只需要除以 100.0 var decVal2: Double = Double(myNumber / 100) ***.com/questions/24645798/… 【参考方案1】:我无法理解的是,它在第 38 行运行正常,但在第 40 行出现同样的错误。
在第 38 行,编译器推断值的类型满足decVal1
应为Double
的要求。
在第 40 行,您明确告诉编译器 myNumber
是 int
,从而消除了编译器确定它是其他东西的能力。
【讨论】:
【参考方案2】:在 Swift 中,你不能用不同的类型进行数学运算(在这种情况下是 Int
和 Double
)。即使Int
和UInt
也不能互换。
你必须创建匹配类型的新实例
var myNumber : Int = 2340
var doubleDiv : Double = Double(myNumber) / 100.0
在大多数情况下,文字中的小数位不是必需的,但使用相同的签名会更清楚。
【讨论】:
【参考方案3】:您必须将Int
转换为Double
var testInt : Int = 4
var testDouble : Double = 333 / 222
var testDouble2 : Double = Double(testInt) / 222
testDouble
编译器直接将 333 和 222 加倍,但您尝试将 Int
分开。两者的类型应该相同。
使用您的代码:
var testInt : Int = 2340
var testDouble : Double = 2340 / 100
println(testDouble)
var testDouble2 : Double = Double(testInt) / 100
println(testDouble2)
输出:
23.4
23.4
【讨论】:
以上是关于整数除法('Int' 不能转换为 'Double')的主要内容,如果未能解决你的问题,请参考以下文章
python中整数除法和float到int转换之间存在差异的原因是啥?