Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Вывод дробных чисел
Форумы портала PHP.SU » PHP » Программирование на PHP » Вывод дробных чисел

Страниц (2): [1] 2 »
 

1. Petro - 19 Мая, 2010 - 10:02:14 - перейти к сообщению
В php пишу mysql_query("CREATE TABLE $mstable ( num INT, title TEXT, comm DEC)");
mysql_query("INSERT INTO $mstable VALUES (1, 'trata-ta', 0.12);
ввожу 0,12 -> выводит 0
ввожу 0,5 -> выводит 1

В mysql пишу INSERT INTO table VALUE(1001, 'trata-ta', 0.12);
Выводит 0

происходит окугление, а мне нужно выдеть, то что я ввел, как это сделать или что я делаю не правильно?
2. SAD - 19 Мая, 2010 - 10:08:16 - перейти к сообщению
А тип поля какой?
3. Djin_dj - 19 Мая, 2010 - 10:10:25 - перейти к сообщению
Petro пишет:
В php пишу mysql_query("CREATE TABLE $mstable ( num INT, title TEXT, comm DEC)");
mysql_query("INSERT INTO $mstable VALUES (1, 'trata-ta', 0.12);
ввожу 0,12 -> выводит 0
ввожу 0,5 -> выводит 1

В mysql пишу INSERT INTO table VALUE(1001, 'trata-ta', 0.12);
Выводит 0

происходит окугление, а мне нужно выдеть, то что я ввел, как это сделать или что я делаю не правильно?

comm decimal(10,10)

10 до запятой, 10 после запятой
4. Petro - 19 Мая, 2010 - 10:50:50 - перейти к сообщению
Я пробовал место DEC писать DECIMAL
Выводит тоже самое.(округляет)

Цитата:
А тип поля какой?

Я думал что DEC определил тип поля или я все же ошибаюсь?
5. Djin_dj - 19 Мая, 2010 - 11:05:31 - перейти к сообщению
Petro пишет:
Я пробовал место DEC писать DECIMAL
Выводит тоже самое.(округляет)

Цитата:
А тип поля какой?

Я думал что DEC определил тип поля или я все же ошибаюсь?

Скобки указал?
6. Petro - 19 Мая, 2010 - 11:20:42 - перейти к сообщению
пробовал так
mysql_query("CREATE TABLE $mstable ( num INT, title TEXT, comm DEC(10.10))");
и так
mysql_query("CREATE TABLE $mstable ( num INT, title TEXT, comm DEC())");
потом так
mysql_query("INSERT INTO $mstable VALUES (1, 'trata-ta', (0.12));
и так
mysql_query("INSERT INTO $mstable VALUES (1, 'trata-ta', '0.12');
все так же как и раньше.

может ошибка сдесь:
#$sql = "SELECT * FROM $mstable";
$res = mysql_query("SELECT * FROM $mstable") or die(mysql_error());
while($row=mysql_fetch_array($res)){
$num=$row['num'];
$title=$row['title'];
$comm=$row['comm'];
echo "($num) - $title - $comm <br>";
}
7. Djin_dj - 19 Мая, 2010 - 11:24:07 - перейти к сообщению
Petro пишет:
comm DEC(10.10)

Вот ошибка посмотри в скобках comm decimal(10,10)
8. Petro - 19 Мая, 2010 - 11:26:53 - перейти к сообщению
пробовал decimal(10,10) и decimal(10.10)
(Добавление)
Все заработало )) просто нужно было обновить таблицу, а я создал таблицу и потом строку создания таблицы закоментировал.
(Добавление)
А что означает это дополнение (10,10) почему когда я подставляю (1,2) выдает ошибку For float(M,D), double(M,D) or decimal(M,D), M must be >= D (column 'comm').
(Добавление)
и еще выдало 0.1200000000, но мне не нужны 0 как их убрать?
(Добавление)
и еще один вопрос, как записать это непосредственно в sql?
я пишу вот так CREATE TABLE table VALUE(num integer, title char(10), comm decimal);
так происходит округление.
CREATE TABLE table VALUE(num integer, title char(10), comm decimal(10,10));
а так пишет ошибку
comm decimal(10,10))' at line 1
9. Djin_dj - 19 Мая, 2010 - 14:44:25 - перейти к сообщению
Petro пишет:

1)и еще выдало 0.1200000000, но мне не нужны 0 как их убрать?
2)и еще один вопрос, как записать это непосредственно в sql?

1) Поставь не 10,10 а 10,2 я же написал что после запятой указыввается количество цифр после округления
2) Уверен что у тебя есть phpmyadmin, создай таблицу вручную и в нем печатается сам запрос вот его и воткни в скрипт
10. Petro - 19 Мая, 2010 - 15:02:34 - перейти к сообщению
спасибо.
phpmyadmin у меня нет.
11. JustUserR - 19 Мая, 2010 - 15:13:29 - перейти к сообщению
Petro У вас же SQL-поле с названием num имеет типа данных INT и следовательно может хранить только целые числа Использование различных функций округления не поможет поскольку дробная часть отсекается уже при сохранении данных - ведь в типе INT хранятся целые числа и в INSERT/UPDATE запросе они преобразуются в соответствующий тип
Решением вашей проблемы будет указание для поля num тип данных FLOAT при создании таблицы - или изменение типа поля в существующей таблице за счет запроса ALTER - но в таком случае ранее сохраненные данные соответственно не будут иметь дробной части
12. Petro - 19 Мая, 2010 - 15:55:23 - перейти к сообщению
num integer, title char(10), но я эти поля не трогаю, с ними все нормально
меня интересует comm поле, именно при записи в это поле происходит округление (
13. JustUserR - 19 Мая, 2010 - 16:09:09 - перейти к сообщению
Petro пишет:
Меня интересует comm поле, именно при записи в это поле происходит округление (
Значит установите для него значение FLOAT - или если данные в таблице уже существуют то измените этот типа с помощью соответствющего ALTER-запроса
14. Petro - 19 Мая, 2010 - 16:53:10 - перейти к сообщению
создал новую таблицу CREATE TABLE tablenew VALUES(num integer, title char(10), comm float);
Заработало ))) спасибо.

Потом создал еще одну таблицу с 1 полем CREATE TABLE tablenew0 VALUES(comm decimal);
И все равно идет округление ((
это значит что decimal не работает?
15. Djin_dj - 19 Мая, 2010 - 18:47:27 - перейти к сообщению
Petro пишет:
это значит что decimal не работает?

Это просто разные типы данных, которые в определенных обстоятельствах нужны!
А так как этих типов много то все типы работают! Радость

 

Powered by ExBB FM 1.0 RC1