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 :: Формат денег в mysql (decimal) [2]

 PHP.SU

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


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

> Без описания
nepster
Отправлено: 09 Августа, 2013 - 15:09:58
Post Id



Частый гость


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


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




Вопрос, зачем округлять ?

Почему нельзя просто отрезать тысячную копейки ?
 
 Top
eai
Отправлено: 09 Августа, 2013 - 15:10:04
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 521
Дата рег-ции: Сент. 2009  
Откуда: Петроград


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




Мелкий пишет:
nepster пишет:
на сколько корректно будет работать

Некорректно.
4.00006 должно округляться до 4.0001
1.99997 - до 2
Правила округления давно видели?

Если вам по бизнес-логике нужно округлять в меньшую сторону - floor


Топикпастер как раз обозначил начало беседы что ему математический метод округления не катит.
 
 Top
nepster
Отправлено: 09 Августа, 2013 - 15:12:15
Post Id



Частый гость


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


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




всегда округляется в большую строну после 5, а следовательно мы в минусе.

Если просто отрезать тысячную копейки, в минусе пользователь. + Это уже не наше дело =)

+ пример:

1,9999999 / округляется до 2, а должно быть 1,99 - мы в минусе на 1 копейку
1,9999999 / отрезаем все 9 до 1,99 для пользователя не заметно.
 
 Top
eai
Отправлено: 09 Августа, 2013 - 15:14:25
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 521
Дата рег-ции: Сент. 2009  
Откуда: Петроград


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




nepster пишет:
в минусе пользователь.



Я тебя уже ненавижу! Улыбка
 
 Top
caballero
Отправлено: 09 Августа, 2013 - 15:14:59
Post Id


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


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


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




более разумная практика вести учет в копейках и юзать int
заодно Бд будет чуть быстрее работать


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
eai
Отправлено: 09 Августа, 2013 - 15:17:24
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 521
Дата рег-ции: Сент. 2009  
Откуда: Петроград


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




caballero пишет:
более разумная практика вести учет в копейках и юзать int
заодно Бд будет чуть быстрее работать


До слез хочу в Пыхе перегрузку операторов для объектов по этой причине
 
 Top
Мелкий Супермодератор
Отправлено: 09 Августа, 2013 - 15:19:06
Post Id



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


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


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




Объясните разницу между округлением в меньшую сторону и отбрасыванием части знаков. Это одно и то же. Следовательно - без округления задача не решается.


-----
PostgreSQL DBA
 
 Top
caballero
Отправлено: 09 Августа, 2013 - 15:19:18
Post Id


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


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


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




Цитата:
До слез хочу в Пыхе перегрузку операторов для объектов по этой причине

это не причина для перегрузки
на самом деле все вычисления в PHP тоже можно вести в копейках и не иметь проблем

только юзеру на екран уже форматировать


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
nepster
Отправлено: 09 Августа, 2013 - 15:20:17
Post Id



Частый гость


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


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




eai, =)

Видел много споров, там мнения разделились, но большинство было за decimal, но походу лучше будет копейки,

от сюда вопрос BIGINT или INT ?
 
 Top
eai
Отправлено: 09 Августа, 2013 - 15:21:55
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 521
Дата рег-ции: Сент. 2009  
Откуда: Петроград


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




caballero пишет:
Цитата:
До слез хочу в Пыхе перегрузку операторов для объектов по этой причине

это не причина для перегрузки
на самом деле все вычисления в PHP тоже можно вести в копейках и не иметь проблем

только юзеру на екран уже форматировать


Чревато ошибками (периодически программер будет забывать поправить вывод)

а вот если бы так

PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. class fixed
  4. {
  5.  
  6. public function __PLUS($val)
  7. {
  8. }
  9.  
  10. }
  11.  
  12.  


то можно было бы создавать класс с фиксированной запятой без ошибок округления и все такое, да вообще с любым заданным поведением.
 
 Top
Мелкий Супермодератор
Отправлено: 09 Августа, 2013 - 15:22:12
Post Id



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


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


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




nepster пишет:
для пользователя не заметно.

А потом почему-то баланс не сходится.

nepster пишет:
походу лучше будет копейки

И возвращаемся обратно.
Было 42156 копейки. Добавили 5% чего-нибудь. Какое число стало? Почему?


-----
PostgreSQL DBA
 
 Top
caballero
Отправлено: 09 Августа, 2013 - 15:22:41
Post Id


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


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


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




INT достаточно по моему

разве что програма для Нигерии или где там выдают зарплату милиардами


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
nepster
Отправлено: 09 Августа, 2013 - 15:24:03
Post Id



Частый гость


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


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




Мы скромный народ работаем в:

$, рублях и гривнах

откуда у нас миллиарды
 
 Top
caballero
Отправлено: 09 Августа, 2013 - 15:24:14
Post Id


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


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


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




Цитата:
то можно было бы создавать класс с фиксированной запятой без ошибок округления и все такое, да вообще с любым заданным поведением.

который програмер может забыть использовать

програмер забыл - это проблема прямых рук программера и прямых глаз тестировщика
(Добавление)
Цитата:
откуда у нас миллиарды

если не принадлежите к Семье то конешно
(Добавление)
Цитата:
Добавили 5% чего-нибудь

не чего нибудь а копеек
не вижу проблем - простая арифметика


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
eai
Отправлено: 09 Августа, 2013 - 15:28:09
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 521
Дата рег-ции: Сент. 2009  
Откуда: Петроград


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




caballero пишет:


програмер забыл - это проблема прямых рук программера и прямых глаз тестировщика


Где взять гениев?
Примите как факт что большую часть прикладного кода пишут середнячки.
И даже большой мастер иногда наступает в какашку.

А тестер ваще роскошь :P
 
 Top
Страниц (3): « 1 [2] 3 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB