我正在尝试使用我的sqlite表中的小数点来显示浮点数。我已经在下面的代码中包含了它在游戏中的表现如何都很好。以及在关卡结束时发生的事情。以及它如何更新到sqlite表。它在游戏过程中以十进制的形式出现了很好的效果,但是在它之后以.0记录整个数字。因此,如果最终时间是52.4,它将显示为52.0。我将字段类型设置为FLOAT。请帮忙。
以下是它在游戏中的表现方式,计算时间为十分之一秒。
-(void)updateTimerLabel{
if(appDelegate.gameStateRunning == YES){
timeSeconds-= 0.1;
timerLabel.text=[NSString stringWithFormat:@"Time: %.1f", timeSeconds];
}
}
这是关卡结束的代码......
-(void) endLevel{
if(appDelegate.easymediumhard ==2){
if(gameVarLevel!=5){
stageCompleted = [[UIAlertView alloc] initWithTitle:@"Sweet!" message:@"Level Completed. Play next level?" delegate:self cancelButtonTitle:@"Yes" otherButtonTitles:@"No", nil];
}
else if(gameVarLevel == 5){
globalScore = timeSeconds;
if(appDelegate.ScoreID==0)
{
appDelegate.ScoreID=[appDelegate InsertGame];
}
else{
[appDelegate updateScores:appDelegate.ScoreID];
}
stageCompleted = [[UIAlertView alloc] initWithTitle:@"Sweet!" message:@"All Levels Complete!\n Play again?" delegate:self cancelButtonTitle:@"Yes" otherButtonTitles:@"No", nil];
}
}
}
这就是它如何更新到表...
-(void)updateScores:(NSInteger)Primary_key
{
sqlite3_stmt *statement=nil;
NSString *sql=nil;
@try
{
statement=nil;
sql=nil;
if(easymediumhard == 2){
sql=[NSString stringWithFormat:@"update tblHard set Score=? where id=%d",Primary_key];
}
if(sqlite3_prepare_v2(database, [sql UTF8String], -1, &statement, NULL)!=SQLITE_OK)
{
NSAssert1(0, @"Error: failed to prepare statement with message '%s'.", sqlite3_errmsg(database));
}
sqlite3_bind_int(statement, 1, globalScore);
int success=sqlite3_step(statement);
if (success == SQLITE_ERROR) {
NSAssert1(0, @"Error: failed to insert into the database with message '%s'.", sqlite3_errmsg(database));
}
sqlite3_finalize(statement);
statement=nil;
sql=nil;
}
@catch (NSException *e)
{
NSLog(@"asd");
}
}
答案 0 :(得分:0)
使用sqlite3_bind_double
代替sqlite3_bind_int
。并确保globalScore
实际上是一个浮点变量(您发布的代码并不清楚它是否是一个)。