20.02.2011, 21:17 | #11 | |
Bannеd
Регистрация: 17.09.2008
Сообщений: 6,446
Вес репутации: 369
|
Цитата:
Добавлено через 2 минуты ошибки возникают как раз не в хранении, а в вычислениях, точнее в преобразовании результата в сохраняемый формат и пример наглядно это демонстирует - пытались пересчитать 10 рублей 20 копеек в копейки и потеряли одну. Последний раз редактировалось Последний Герой; 20.02.2011 в 21:17. Причина: Добавлено сообщение |
|
20.02.2011, 21:22 | #12 | |
Серьезный бизнес.
|
Цитата:
вот почему-то норм программеры хранят деньги в целочисленных переменных, не используя всякие double и т.п. а ПГ хранит - в чем, кстати? |
|
20.02.2011, 22:55 | #14 | ||
Мастер
Регистрация: 10.10.2008
Адрес: Одесса Мама
Сообщений: 947
Вес репутации: 244
|
Цитата:
Цитата:
Для финансовых вычислений, считаю, нет лучшего способа чем сразу сдвинуть точку на два знака вправо и оперировать всегда только целыми числами. Добавлено через 2 минуты Зачем? Если эти денежные данные надо все равно считать, а значит преобразовывать их из строки в число и обратно. Последний раз редактировалось dgek1111; 20.02.2011 в 22:55. Причина: Добавлено сообщение |
||
20.02.2011, 23:47 | #15 | ||
Bannеd
Регистрация: 17.09.2008
Сообщений: 6,446
Вес репутации: 369
|
Цитата:
PHP код:
Цитата:
Вот вот. А вся ошибка в незнании, как машина обрабатывает числа с плавающей точкой. |
||
20.02.2011, 23:55 | #16 |
Пожиратель черепашкоВ
Регистрация: 24.12.2008
Адрес: Телемелетрямдия
Сообщений: 4,739
Вес репутации: 395
|
А как все хорошо начиналось
ПысЫ: где опрос, блин?
__________________
|
20.02.2011, 23:57 | #17 |
Серьезный бизнес.
|
правильнее на 4 - и да, считать их как целые. так и делают в банковском софте
|
21.02.2011, 00:00 | #18 | |||
Эксперт
Регистрация: 05.03.2008
Сообщений: 1,095
Вес репутации: 249
|
Последний Герой,
Цитата:
Для хранения денежных типов специально преднезначен тип DECIMAL, а это по сути текстовый тип. С сайта MySQL: Цитата:
Цитата:
Последний раз редактировалось boric; 21.02.2011 в 00:08. |
|||
21.02.2011, 00:31 | #19 | |
Bannеd
Регистрация: 17.09.2008
Сообщений: 6,446
Вес репутации: 369
|
последние цифры всегда нули? зачем они. а если они не нули, тогда это уже не целые деньги.
Цитата:
вот оно ключевое слово. каким образом? мало просто иметь такую структуру хранения, нужно еще и правильно организовать запись. главное понимать, денежные величины это штучный товар, который нам нужен в только результате, а в самом процессе вычисления до вывода можно использовать хоть проценты. |
|
21.02.2011, 00:31 | #20 |
Эксперт
Регистрация: 05.03.2008
Сообщений: 1,095
Вес репутации: 249
|
В Питоне даже модуль с типом Decimal есть для таких случаев. Сабжевый пример в питоне может выглядеть так:
Код:
from decimal import * a = Decimal('10.20') b = Decimal('100') c = a * b print c Ответ: Decimal('1020.00') |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Бесплатные консультации по сапе | FreeDen | Вопросы от новичков | 537 | 02.12.2014 20:29 |
Бесплатные консультации для начинающих оптимизаторов | FoxTail | Общие вопросы оптимизации | 33 | 03.12.2011 17:10 |
Бесплатные консультации и бесплатный курс | Федор Задков | Курилка | 5 | 26.07.2010 13:47 |
Нужны консультации | ak2al | Вопросы от новичков | 1 | 02.03.2010 10:22 |
СЕО консультации для новичков | seostudy_su | Общие вопросы оптимизации | 42 | 27.08.2009 06:35 |
Часовой пояс GMT +3, время: 00:38.