要上傳一個分數到遊戲中心,他們要求你有一個類型爲int64_t
的值。如何分配一個浮點數到一個int64_t
有沒有辦法簡單地將我的float
轉換爲int64_t
?
我已經構建了我的整個遊戲圍繞得分,我需要一個簡單的解決方案任何想法?
要上傳一個分數到遊戲中心,他們要求你有一個類型爲int64_t
的值。如何分配一個浮點數到一個int64_t
有沒有辦法簡單地將我的float
轉換爲int64_t
?
我已經構建了我的整個遊戲圍繞得分,我需要一個簡單的解決方案任何想法?
如果你的浮標在尺寸有限的(小於9,223,372,036,854,775,807),轉換
int64_t myInt = (int64_t) myFloat;
如果你想「拯救」小數,可以縮放結果(乘浮10或100):
int64_t myInt_scaled = (int64_t) (myFloat * 100.0);
謝謝! int64_t支持分支嗎? –
不,int64_t只是整數;所以要保存幾位小數,你應該縮放你的浮點數。 – osgx
您需要將float轉換爲int64_t,然後檢查溢出。此演員陣容將截斷數字,即5.655將變爲5.
try {
score = (int64_t)floatScore;
}
catch(OverflowException e) {
// Print error
}
我會對此進行一次刺探。其他人的回答(來自http://www.cocos2d-iphone.org/forum/topic/14839)
每個分數都必須以int64形式提交。所以你需要轉換你的浮點數以匹配你的排行榜的設置。因此,在固定的3 dp中,您需要將float乘以1000以獲得第三個dp到 int - 然後提交。
所以
的int64_t gcScore =(的int64_t)(得分* 1000.0f);
gkscore.value = gcScore;
隨着一些四捨五入的玩法,確保提交什麼 是什麼也已經顯示給玩家 - 我們有一些 在GC和遊戲顯示時有問題 - 只是 必須經過每個顯示屏&將得分值轉換爲 確保他們注意正確顯示。
所有對排行榜設置的更改似乎都需要一段時間,並且 提交的分數通常也不會顯示出來。遊戲 中心沙箱是坦率的說實話。一旦你上線, 會更好地響應新的分數,但是你不能對排行榜格式的 進行任何更改,所以你必須堅持在沙盒中才能得到 它是正確的。
你需要C語言的解決方案嗎?你的浮動有多大(你想轉換的最大值是多少)? – osgx
Objective-c和數字不是很大,他們只是有decimels –
可能重複[如何將一個浮點數轉換爲一個int在目標C?](http://stackoverflow.com/questions/286756/how- do-i-convert-a-float-to-an-int-in-objective-c) – osgx