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

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

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
Petro
Отправлено: 19 Мая, 2010 - 10:02:14
Post Id



Гость


Покинул форум
Сообщений всего: 126
Дата рег-ции: Март 2010  


Помог: 2 раз(а)




В 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

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


-----
Нет ничего более постоянного, чем временное.
 
 Top
SAD
Отправлено: 19 Мая, 2010 - 10:08:16
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2508
Дата рег-ции: Май 2009  
Откуда: Днепропетровск, Украина


Помог: 75 раз(а)




А тип поля какой?
 
 Top
Djin_dj
Отправлено: 19 Мая, 2010 - 10:10:25
Post Id



Частый гость


Покинул форум
Сообщений всего: 180
Дата рег-ции: Июнь 2008  
Откуда: Россия


Помог: 0 раз(а)




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 после запятой
 
 Top
Petro
Отправлено: 19 Мая, 2010 - 10:50:50
Post Id



Гость


Покинул форум
Сообщений всего: 126
Дата рег-ции: Март 2010  


Помог: 2 раз(а)




Я пробовал место DEC писать DECIMAL
Выводит тоже самое.(округляет)

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

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


-----
Нет ничего более постоянного, чем временное.
 
 Top
Djin_dj
Отправлено: 19 Мая, 2010 - 11:05:31
Post Id



Частый гость


Покинул форум
Сообщений всего: 180
Дата рег-ции: Июнь 2008  
Откуда: Россия


Помог: 0 раз(а)




Petro пишет:
Я пробовал место DEC писать DECIMAL
Выводит тоже самое.(округляет)

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

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

Скобки указал?
 
 Top
Petro
Отправлено: 19 Мая, 2010 - 11:20:42
Post Id



Гость


Покинул форум
Сообщений всего: 126
Дата рег-ции: Март 2010  


Помог: 2 раз(а)




пробовал так
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>";
}


-----
Нет ничего более постоянного, чем временное.
 
 Top
Djin_dj
Отправлено: 19 Мая, 2010 - 11:24:07
Post Id



Частый гость


Покинул форум
Сообщений всего: 180
Дата рег-ции: Июнь 2008  
Откуда: Россия


Помог: 0 раз(а)




Petro пишет:
comm DEC(10.10)

Вот ошибка посмотри в скобках comm decimal(10,10)
 
 Top
Petro
Отправлено: 19 Мая, 2010 - 11:26:53
Post Id



Гость


Покинул форум
Сообщений всего: 126
Дата рег-ции: Март 2010  


Помог: 2 раз(а)




пробовал 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


-----
Нет ничего более постоянного, чем временное.
 
 Top
Djin_dj
Отправлено: 19 Мая, 2010 - 14:44:25
Post Id



Частый гость


Покинул форум
Сообщений всего: 180
Дата рег-ции: Июнь 2008  
Откуда: Россия


Помог: 0 раз(а)




Petro пишет:

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

1) Поставь не 10,10 а 10,2 я же написал что после запятой указыввается количество цифр после округления
2) Уверен что у тебя есть phpmyadmin, создай таблицу вручную и в нем печатается сам запрос вот его и воткни в скрипт
 
 Top
Petro
Отправлено: 19 Мая, 2010 - 15:02:34
Post Id



Гость


Покинул форум
Сообщений всего: 126
Дата рег-ции: Март 2010  


Помог: 2 раз(а)




спасибо.
phpmyadmin у меня нет.


-----
Нет ничего более постоянного, чем временное.
 
 Top
JustUserR
Отправлено: 19 Мая, 2010 - 15:13:29
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Petro У вас же SQL-поле с названием num имеет типа данных INT и следовательно может хранить только целые числа Использование различных функций округления не поможет поскольку дробная часть отсекается уже при сохранении данных - ведь в типе INT хранятся целые числа и в INSERT/UPDATE запросе они преобразуются в соответствующий тип
Решением вашей проблемы будет указание для поля num тип данных FLOAT при создании таблицы - или изменение типа поля в существующей таблице за счет запроса ALTER - но в таком случае ранее сохраненные данные соответственно не будут иметь дробной части


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Petro
Отправлено: 19 Мая, 2010 - 15:55:23
Post Id



Гость


Покинул форум
Сообщений всего: 126
Дата рег-ции: Март 2010  


Помог: 2 раз(а)




num integer, title char(10), но я эти поля не трогаю, с ними все нормально
меня интересует comm поле, именно при записи в это поле происходит округление (


-----
Нет ничего более постоянного, чем временное.
 
 Top
JustUserR
Отправлено: 19 Мая, 2010 - 16:09:09
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Petro пишет:
Меня интересует comm поле, именно при записи в это поле происходит округление (
Значит установите для него значение FLOAT - или если данные в таблице уже существуют то измените этот типа с помощью соответствющего ALTER-запроса


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Petro
Отправлено: 19 Мая, 2010 - 16:53:10
Post Id



Гость


Покинул форум
Сообщений всего: 126
Дата рег-ции: Март 2010  


Помог: 2 раз(а)




создал новую таблицу CREATE TABLE tablenew VALUES(num integer, title char(10), comm float);
Заработало ))) спасибо.

Потом создал еще одну таблицу с 1 полем CREATE TABLE tablenew0 VALUES(comm decimal);
И все равно идет округление ((
это значит что decimal не работает?


-----
Нет ничего более постоянного, чем временное.
 
 Top
Djin_dj
Отправлено: 19 Мая, 2010 - 18:47:27
Post Id



Частый гость


Покинул форум
Сообщений всего: 180
Дата рег-ции: Июнь 2008  
Откуда: Россия


Помог: 0 раз(а)




Petro пишет:
это значит что decimal не работает?

Это просто разные типы данных, которые в определенных обстоятельствах нужны!
А так как этих типов много то все типы работают! Радость
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB