如何将浮点数赋给int64_t

时间:2011-08-20 14:00:03

标签: game-center type-conversion

要将分数上传到游戏中心,他们要求您拥有int64_t类型的值。

有没有办法简单地将float转换为int64_t

我已经围绕得分构建了我的整个游戏,我需要一个简单的解决方案吗?

3 个答案:

答案 0 :(得分:1)

我会捅这个。其他人的答案(来自http://www.cocos2d-iphone.org/forum/topic/14839

  

每个分数都必须以int64的形式提交。因此,您需要转换浮动以匹配排行榜的设置。所以固定3   dp你需要将浮点数乘以1000以得到第三个dp   int - 然后提交。

     

所以

     

int64_t gcScore =(int64_t)(得分* 1000.0f);

     

gkscore.value = gcScore;

     

随着一些四舍五入的发挥,确保什么是重要的   获得提交的内容也是向玩家展示的 - 我们有一些   在GC和游戏中有时出现问题 - 只是   必须通过每个显示器和&将得分值转换为   确保他们注意正确显示。

     

排行榜设置的所有更改都需要一段时间,而且   提交的分数通常也不会出现一段时间。游戏   说实话,中心沙箱非常糟糕。一旦你上线它就是   更好地回应新的分数,但你不能做任何改变   排行榜格式,所以你必须坚持在沙盒中得到   没错。

答案 1 :(得分:0)

如果您的花车尺寸有限(小于9,223,372,036,854,775,807),则转换为

int64_t myInt = (int64_t) myFloat;

如果要“保存”小数,可以缩放结果(将浮点数乘以10或100):

int64_t myInt_scaled = (int64_t) (myFloat * 100.0);

答案 2 :(得分:0)

您需要将float转换为int64_t然后检查溢出。此演员表将截断该数字,即5.655将变为5。

    try {
       score = (int64_t)floatScore;
    }
    catch(OverflowException e) {
       // Print error
    }