這些看起來是等價的(應該給出任何變量值相同的答案),如果你使用了正確的單位,它們都應該給你正確的答案。您需要將角度轉換爲度數。正如@theB指出的那樣,速度應該以米/秒爲單位,距離輸出將以米爲單位。
要做的最好的事情是採取最簡單的數字,例如velocity = 1,g = 10和45度角(pi/4弧度)。檢查你是否得到正確的答案。它應該非常簡單,您可以使用計算器自行計算結果。先把它弄好。然後使用其他值作爲輸入,一次更改一個值。
正如@PeterSchneider在評論中所說,檢查我們立即知道答案的值(例如90度和0度)可能非常有用。這些看起來像是現實生活中永遠不需要的毫無意義的例子。然而,它們作爲測試用例具有以下優點:
- 指定行爲應該是很容易的。
- 通過檢查這些情況,您可能會發現一個影響其他值的錯誤。
- 相反,您可能會發現一個錯誤處理邊緣情況的方式,您不會發現這種情況,這種情況除以零。
一些邊緣案例可能非常棘手。萬一重力是零怎麼辦?
你應該把你的代碼放在一個函數中,該函數需要velocity
,g
和angle
作爲參數並返回距離。這將允許您輕鬆地嘗試多個不同的輸入。
這種程序有一種形式化,稱爲單元測試。你寫了一小段測試代碼,它檢查不同的情況,從最簡單的可能開始。每次進行更改時,都要重新運行測試以確保一切仍然正常。如果你有興趣,你可以看一下名爲NUnit的C#單元測試框架。它作爲VS的加載項並且非常簡單易用。
來源
2015-08-25 14:26:05
jwg
'angle'是否包含度數或弧度的角度? Math.Sin需要弧度。 – Heinzi
我猜你的角度是無效的,可能你忘了將它轉換成deg <-> rad。另外,即便如此,僅僅移動像這樣的'/ 9.807f'也不可能突然出現負面現象。要麼他們已經出現在第一個案件中,要麼你在其他地方也必須有錯誤。很難說沒有代碼的休息。 – quetzalcoatl
另外,以米/秒爲單位的速度? – theB