Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Опять проблемы с округлением :(

Сообщения:  [1-10]    [11-20]  [21-28] 

 
 автор: AcidTrash   (16.08.2008 в 00:52)   письмо автору
 
   для: sim5   (15.08.2008 в 08:55)
 

>я то тут причем? :) Я вот вчера серьезно задумался, получал ли я сдачу в магазинах в виде >5.53 руб., например, не вспомнил такого случая. Если копейки, то 10, 20, 30...

Возможно сдачу получить и 1 и 5. :)
Особенно в аптеках(точность как в аптеке).

Просто, если имеет место банковские операции, то значения вычисляются аж до 4 символа после запятой.

  Ответить  
 
 автор: ronin80   (15.08.2008 в 09:46)   письмо автору
 
   для: sim5   (15.08.2008 в 08:55)
 

у нас все цены в долларах, и соответственно центах :)

  Ответить  
 
 автор: sim5   (15.08.2008 в 08:55)   письмо автору
 
   для: ronin80   (15.08.2008 в 07:54)
 

А я то тут причем? :) Я вот вчера серьезно задумался, получал ли я сдачу в магазинах в виде 5.53 руб., например, не вспомнил такого случая. Если копейки, то 10, 20, 30... И цен с единицами копеек тем более не видел. А кто же их тогда считает? :)

  Ответить  
 
 автор: ronin80   (15.08.2008 в 07:54)   письмо автору
 
   для: sim5   (14.08.2008 в 19:29)
 

Похоже вы оказались правы! Сменил тип полей на decimal и для всех переменных участвующих в расчётах, округление прошло нормально.

Как говорится век живи век учись :) Всем огромное спасибо за помощь!

  Ответить  
 
 автор: sim5   (14.08.2008 в 20:28)   письмо автору
 
   для: Trianon   (14.08.2008 в 20:15)
 

Ну с целыми хлопот меньше будет, правда ни о какой колбасе 300 гр. за 30.57 руб. и речи, быть не может, 31 руб. и точка :))

  Ответить  
 
 автор: Trianon   (14.08.2008 в 20:15)   письмо автору
 
   для: sim5   (14.08.2008 в 20:12)
 

А рубли нужны?

Можно вообще все деньги в копейках хранить целыми числами.
Проблема от этого не исчезнет.

  Ответить  
 
 автор: sim5   (14.08.2008 в 20:12)   письмо автору
 
   для: Trianon   (14.08.2008 в 19:56)
 

Округлять все до рублей - ну кому нужны сейчас копейки? :)

  Ответить  
 
 автор: Trianon   (14.08.2008 в 19:56)   письмо автору
 
   для: ronin80   (14.08.2008 в 19:19)
 

по деньгам оба ответа имеют равные права. Они одинаково отличаются от истинного.

  Ответить  
 
 автор: sim5   (14.08.2008 в 19:29)   письмо автору
 
   для: ronin80   (14.08.2008 в 19:17)
 

Ну понял я о чем Trianon. Так не только в MySQL, но и РНР, и JS, например, могут давать разный результат при вычислениях, так что и с другой стороны тоже можно ожидать ошибок.

  Ответить  
 
 автор: sim5   (14.08.2008 в 19:19)   письмо автору
 
   для: Trianon   (14.08.2008 в 19:14)
 

CREATE TABLE `tst` (
`id` int(11) NOT NULL auto_increment,
`number` float default NULL,
`name` varchar(60) default NULL,
`date` date default NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=20 DEFAULT CHARSET=cp1251 AUTO_INCREMENT=20 ;

INSERT INTO `tst` VALUES (6, 0.19, 'imag', '2008-08-15');

Выполняю:

mysql_query("UPDATE tst SET number=ROUND(number*487.5,2)");

После выполнения:

INSERT INTO `tst` VALUES (6, 92.62, 'imag', '2008-08-15');

Или вы имеете ввиду именно точность вычислений?

  Ответить  

Сообщения:  [1-10]    [11-20]  [21-28] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования