2016-08-04 45 views
-24

我真的不明白'Double'的意思。我正在爲suvat - mechanics方程編寫基本代碼。「二元運算符'*'不能應用於'Double'和'Int'」是什麼意思 - 什麼是雙精度?

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

[雙精度浮點數(HTTPS: //en.wikipedia.org/wiki/Double-precision_floating-point_format) – JAL

+1

請共享變量和多個上下文的聲明 – Aladin

+0

讓initialVelocity = 3 設加速度= 2 讓時間= 5 讓finalVelocity = initialVelocity +(加速*時間) print(「最終速度是\(finalVelocity)」) 讓半= 0.5 讓accelerationTimeSquared =加速度*(時間*時間) 讓位移=(initialVelocity *時間)+(0.5 *(加速度*(時間*時間))) 打印(「位移是'(位移)「) –

回答

0

雙打是浮點數,並具有更高的精度,如小數。您通常必須將Int轉換爲能夠使用Double執行操作。請參閱this question

+0

那麼我怎麼會這樣做在我的情況 - 讓位移=雙 –

+0

因此:讓位移=雙(initialVelocitytime)+(0.5 *雙(加速*(時間*時間))) –

4

「Double」表示雙精度浮點數。這與數字如何存儲在內存中有關,它的精度以十進制數字表示,範圍可以跨越。 From 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)))