整数除法('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 行,您明确告诉编译器 myNumberint,从而消除了编译器确定它是其他东西的能力。

【讨论】:

【参考方案2】:

在 Swift 中,你不能用不同的类型进行数学运算(在这种情况下是 IntDouble)。即使IntUInt 也不能互换。

你必须创建匹配类型的新实例

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')的主要内容,如果未能解决你的问题,请参考以下文章

linux 除法保留小数

java中如何将分数转化成小数?

python中整数除法和float到int转换之间存在差异的原因是啥?

Java整数除法结果为double? [复制]

为啥 int 被提升为 double 而不是 float 以进行隐式转换

为啥除法后我的 double 或 int 值始终为 0?