首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >算术表达式中双重强制的文本Int

算术表达式中双重强制的文本Int
EN

Stack Overflow用户
提问于 2019-11-06 03:52:43
回答 1查看 96关注 0票数 0

在计算表达式之前,Swift似乎对包含双精度变量的表达式中的文字Int操作数应用了浮点传播(在其他语言中称为浮点传播)。有没有什么明确的说法呢?我找不到关于期望的具体描述。

例如,假设我有let b = 0.14。然后,以下所有操作都会产生相同的结果。(我正在使用Swift 5.0.1。)

代码语言:javascript
复制
 19> 5.0 * b / 6.0
$R12: Double = 0.11666666666666668
 20> 5 * b / 6
$R13: Double = 0.11666666666666668
 21> 5 / 6 * b
$R14: Double = 0.11666666666666668
 22> b * 5 / 6
$R15: Double = 0.11666666666666668
 23> (5 / 6) * b
$R16: Double = 0.11666666666666668
 24> b * (5 / 6)
$R17: Double = 0.11666666666666668

这很好,这似乎使预测结果变得更容易,因为它似乎对操作的顺序不敏感。(顺便说一句,我非常确定,这种行为与其他一些语言不同。)然而,我找不到任何明确的声明,说明在混合了双变量的文本整数操作数的情况下应该期望什么;我查看了这些页面,希望找到一些东西:ExpressionsBasic OperatorsAdvanced Operators。有没有人能指出描述这种情况下的预期的规范?

EN

回答 1

Stack Overflow用户

发布于 2019-11-06 04:00:50

看起来Swift应用了浮点传播

实际上不是这样的。看起来是这样的,因为Double符合ExpressibleByIntegerLiteral,这解释了为什么这是可能的:

代码语言:javascript
复制
let double: Double = 1

但不是:

代码语言:javascript
复制
let i: Int = 1
print(i * 1.23) // error: binary operator '*' cannot be applied to operands of type 'Int' and 'Double'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58718509

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档