2013-12-01 4 views
0

Я пытаюсь напечатать значение из базы данных MySQL; значение имеет тип decimal (1,2). Когда я печатаю его с PHP 5.2, он отображает его как int.MySQL Decimal Returning As Int

Вот таблица:

Script | Версия

1 | 1,5

2 | 2,0

Вот моя функция:

function getVersion($script) 
{ 
    global $mysqli; 
    $stmt = $mysqli->prepare("SELECT Version FROM Scripts WHERE Script = ?"); 
    $stmt->bind_param("i", $script); 
    $stmt->execute(); 
    $stmt->bind_result($version); 
    while ($stmt->fetch()) 
    { 
     printf("\"%d\"", $version); 
    } 
    $stmt->free_result(); 
    $stmt->close(); 
} 

Я предположил, что он будет печататься как десятичный, так как формат, который я выбрал, является десятичным; я что-то не вижу? Я попытался использовать number_format, но это не помогло.

+1

Вы всегда получите целое число при печати используя '% d'. Вы сделали что-нибудь еще, чтобы убедиться, что это на самом деле 'int'? –

ответ

3

«d» формата %d означает «десятичный», как в «основании 10», а не как «номер с дробной частью». Если вы хотите, чтобы фракция отображалась, вместо этого используйте %f.

0
printf("\"%1\$.2f\"", $version); 

так, что десятичная (1,2) соблюдается, так как только %f покажет максимум знаков после запятой в поплавок, который на моей платформе есть 6.

+0

Я пробовал "\"% 1 \ $. 2f \ "", но это не сработало, как ожидалось. Я начал использовать "\"% 2.1f \ "", и это сработало для меня. – dalawh

+0

странно, как мое, так и ваше решение работают на меня. рад, что ты попал туда, куда хочешь – chiliNUT