我目前正在構建我的Smalltalk的第一件事,我遇到了問題。我必須處理用戶輸入的數字,我需要將它除以2,仍然是一個整數。如果用戶輸入10,我將與5一起工作,如果他們輸入11,我必須與6一起工作,但我顯然會得到5.5。Roundt整數在Smalltalk
如果我能得到一個數字的mod,我可以簡單地確保mod = 0,否則加0.5,它會做得一樣好,但我無法找到如何在SmallTalk中進行mod操作,所有我的搜索最終會發現與實際社交小遊戲無關的東西,這非常令人沮喪。
所以,如果你能告訴我如何得到一個數字的mod,這將是非常好的,如果你能告訴我如何用一個單獨的函數進行調整,甚至更好。感謝您的幫助和時間。
更新:經過一番研究,我試圖做這樣說:
mod := par rem: 2.
mod = 0 ifFalse: [ par := par + 0.5 ].
這裏爲「國防部」是國防部變量「相提並論」的,如果是不爲0,應該加起來0.5到標準桿。
我現在的問題是,嘗試在時間重複使用par會導致「BoxedFloat64不明白#timesRepeat」錯誤。所以我仍然處於同一個問題,或者只是需要一種方法來使一個整數浮動。
您能否指定您使用的方言?例如pharo,squeak,vw,...? –
Pharo,雖然我的問題已經修復,謝謝。但是,如果您知道如何將浮點數(不包含小數部分)轉換爲整數,那麼對於將來的參考將非常有用。 – Markski
您可以隨時瀏覽BoxedFloat64及其超類的方法(Squeak具有「瀏覽協議」功能,可讓您同時瀏覽所有這些方法,但我不知道它是否仍可在Pharo中使用,以及它是如何被調用的那裏)。 Number有一個截斷float的'asInteger'方法(這不正是你想要的,但它可以指導你進一步的方法)。還有'roundUpTo:','roundTo:'和'rounded'。整數除法的二進制消息是// //,其模伴侶是雙反斜槓。 – JayK