什么"二元运算符' *'不适用于' Double'和' Int'"意思是 - 什么是双重?

时间:2016-08-04 19:42:26

标签: ios swift

我真的不明白什么是' Double'手段。我正在尝试为suvat - mechanics方程编写基本代码。

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)")

2 个答案:

答案 0 :(得分:4)

“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)))

答案 1 :(得分:0)

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