“二元运算符'*'不能应用于'Double'和'Int'”是什么意思 - 什么是Double?

问题描述 投票:-25回答:2

我真的不明白'双'意味着什么。我正在尝试编写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)")
ios swift
2个回答
4
投票

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

“Double表示64位浮点数。”和“Double的精度至少为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)))

0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.