【问题标题】:What does "Binary operator '*' cannot be applied to 'Double' and 'Int'" Mean - What is Double? [duplicate]“二进制运算符'*'不能应用于'Double'和'Int'”是什么意思 - 什么是Double? [复制]
【发布时间】:2016-08-04 19:42:25
【问题描述】:

我真的不明白“双”是什么意思。我正在尝试为suvat - mechanics equations 编写基本代码。

let displacement = (initialVelocity*time) + (0.5*(acceleration*(time*time)))

等式是s = ut + 1/2at^2

let initialVelocity = 3 
let acceleration = 2 
let time = 5 
let finalVelocity = initialVelocity + (acceleration * time) 
print ("The final Velocity is (finalVelocity)") 
let half = 0.5 
let accelerationTimeSquared = acceleration * (time * time) 
let displacement = (initialVelocitytime) + (0.5 * (acceleration * (time * time))) 
print("The displacement is (displacement)")

【问题讨论】:

  • 请分享变量声明和更多上下文
  • 让 initialVelocity = 3 let acceleration = 2 let time = 5 let finalVelocity = initialVelocity + (accelerationtime) print ("The final Velocity is (finalVelocity)") let half = 0.5 let accelerationTimeSquared = 加速度*(时间时间)让位移=(初始速度时间)+(0.5*(加速度*(时间时间)))打印(“位移为(位移)”)
  • @EmemUmoh 如果您需要快速回答,您需要添加Double 作为所有变量的显式类型,例如let initialVelocity:Double = 3,但也许您应该阅读:Swift 编程语言(Swift 2.2)

标签: ios swift


【解决方案1】:

“Double”代表双精度浮点数。这与数字在内存中的存储方式、十进制数字的精度以及它可以跨越的范围有关。来自the Swift 2.2 language documentation

“Double 表示 64 位浮点数。”和“双有一个 至少 15 位小数的精度"

对于您的具体问题,请考虑以下代码:

let initialVelocitytime = 6
let acceleration = 4.5
let time = 3.5
let displacement = Double(initialVelocitytime) + (0.5*(acceleration*(time*time)))

print(displacement)

在这个例子中,我混合了 initialVelocitytime(它是一个 Int)类型和 (0.5*(acceleration*(time*time))) 的结果(它的计算结果是一个 Double)。为了使用 + 添加它们,我将 initialVelocityType 转换为 Double 值,如下所示:Double(initialVelocitytime)。每当您想将 Int 类型(没有小数位,例如 14 或 -212)与 Double 类型混合时,都可以通过这种方式强制转换 Int 变量。如果您的变量之一(例如加速度或时间)是 Int,您也需要以这种方式进行转换,即Double(acceleration),或者总共:

let displacement = Double(initialVelocitytime) + (0.5*(Double(acceleration)*(time*time)))

【讨论】:

    【解决方案2】:

    双精度数是浮点数,精度更高,例如小数位数。您通常必须转换 Int 才能使用 Double 进行操作。见this question

    【讨论】:

    • 那么在我的情况下我该怎么做 - 让位移 = 双倍
    • 如:设位移 = Double(initialVelocitytime) + (0.5 * Double(acceleration * (time * time)))
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-16
    • 2011-04-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-05
    • 1970-01-01
    • 2017-11-01
    相关资源
    最近更新 更多