"Binary operator '*' cannot be applied to 'Double' and 'Int'"是什么意思 - 什么是双倍?



我真的不明白"Double"是什么意思。我正在尝试为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)")

"Double"代表双精度浮点数。这与数字在内存中的存储方式、小数位数的精度以及它可以跨越的范围有关。来自Swift 2.2语言文档

"Double表示64位浮点数。"one_answers"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)))

双精度是浮点数字,精度更高,例如小数位数。您通常必须转换Int才能使用Double进行操作。请参阅此问题

相关内容

最新更新