6

在我的应用程序中,我需要将时间提交到游戏中心,并且我需要以经过的时间显示 - 以百分之一秒的格式。

00:00:00.00

这是我想在排行榜中显示的格式。

在我的应用程序中,我得到以下格式的时间

SS.SS

ss = 秒 SS = 百分之一秒

在将其发送到游戏中心之前,我将值转换为双倍

double newScoreDouble = [newScore doubleValue];

但是当我将双倍分数发送到游戏中心时,它要求我将其转换为 int64_t 格式。但是当我将其转换为该格式时,它会丢失部分双精度值。

double intPart = 0;
double fractPart = modf(newScoreDouble, &intPart);
int isecs = (int)intPart;
int min = isecs / 60;
int sec = isecs % 60;
int hund = (int) (fractPart * 100);

int64_t time_to_send_through_game_center = min*6000 + (sec*100 + hund);

这是我将 double 转换为 int64_t 的方式

任何人都可以说如何将整个双精度值发送到游戏中心并以经过时间显示 - 到百分之一秒的格式。

谢谢

4

1 回答 1

13

我以前做过。当您以百分之一秒的格式录制乐谱时。在提交之前,您会将您的秒数乘以一百。

因此,假设用户得分 1 分 44 秒 300 毫秒:1:44:30 = 104.3 秒。然后您将 GKScore 对象的 value 属性设置为等于 104.3 * 100 = 10430,然后像这样提交。

试试看 :)

于 2012-08-08T16:27:16.337 回答