Десятичные точки в таблице sqlite? - PullRequest
0 голосов
/ 14 февраля 2010

Я пытаюсь найти число с плавающей запятой в моей таблице 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");
    }
}

1 Ответ

0 голосов
/ 14 февраля 2010

Используйте sqlite3_bind_double вместо sqlite3_bind_int. И убедитесь, что globalScore на самом деле является переменной с плавающей точкой (код, который вы опубликовали, не дает понять, является ли он одним).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...