Вернуться   Форум SAPE.RU > Другое > Курилка

-->
Ответ
 
Опции темы
Старый 20.02.2011, 21:17   #11
Bannеd
 
Регистрация: 17.09.2008
Сообщений: 6,446
Вес репутации: 369
Последний Герой - прекрасное будущееПоследний Герой - прекрасное будущееПоследний Герой - прекрасное будущееПоследний Герой - прекрасное будущееПоследний Герой - прекрасное будущееПоследний Герой - прекрасное будущееПоследний Герой - прекрасное будущееПоследний Герой - прекрасное будущееПоследний Герой - прекрасное будущееПоследний Герой - прекрасное будущееПоследний Герой - прекрасное будущее
По умолчанию

Цитата:
Сообщение от Jimi Dini Посмотреть сообщение
вот поэтому в финансовых софтах и скриптах, бабло хранится как целое число.
такое ПО пишут только идиоты, которые не умеют считать и не понимают как данные хранятся в памяти. там бывает больше ошибок которые ведут к появлению или потере денег. все данные в любом случае хранятся как целое число в памяти. только больной человек будет заново изобретать арифметику, когда можно взять готовую.

Добавлено через 2 минуты
Цитата:
Сообщение от Jimi Dini Посмотреть сообщение
бабло хранится
ошибки возникают как раз не в хранении, а в вычислениях, точнее в преобразовании результата в сохраняемый формат и пример
Цитата:
Сообщение от Anadonam Посмотреть сообщение
$c=10.20*100;
$sum=(int)$c;
наглядно это демонстирует - пытались пересчитать 10 рублей 20 копеек в копейки и потеряли одну.

Последний раз редактировалось Последний Герой; 20.02.2011 в 21:17. Причина: Добавлено сообщение
Последний Герой вне форума   Ответить с цитированием
Старый 20.02.2011, 21:22   #12
Серьезный бизнес.
 
Аватар для Jimi Dini
 
Регистрация: 07.03.2008
Адрес: localhost
Сообщений: 2,254
Вес репутации: 319
Jimi Dini - прекрасное будущееJimi Dini - прекрасное будущееJimi Dini - прекрасное будущееJimi Dini - прекрасное будущееJimi Dini - прекрасное будущееJimi Dini - прекрасное будущееJimi Dini - прекрасное будущееJimi Dini - прекрасное будущееJimi Dini - прекрасное будущееJimi Dini - прекрасное будущееJimi Dini - прекрасное будущее
Отправить сообщение для Jimi Dini с помощью ICQ
По умолчанию

Цитата:
Сообщение от Последний Герой Посмотреть сообщение
такое ПО пишут только идиоты, которые не умеют считать и не понимают как данные хранятся в памяти. там бывает больше ошибок которые ведут к появлению или потере денег. все данные в любом случае хранятся как целое число в памяти. только больной человек будет заново изобретать арифметику, когда можно взять готовую.
if you so clever, show me your money.

вот почему-то норм программеры хранят деньги в целочисленных переменных, не используя всякие double и т.п.
а ПГ хранит - в чем, кстати?
__________________
qwsa.ru - подъем по НЧ и СЧ, ускорение индексации
подписка на список прокси - prxy.ru
aswq.ru - обучение вебмастеров
Jimi Dini вне форума   Ответить с цитированием
Старый 20.02.2011, 22:20   #13
Эксперт
 
Регистрация: 05.03.2008
Сообщений: 1,095
Вес репутации: 249
boric - прекрасное будущееboric - прекрасное будущееboric - прекрасное будущееboric - прекрасное будущееboric - прекрасное будущееboric - прекрасное будущееboric - прекрасное будущееboric - прекрасное будущееboric - прекрасное будущееboric - прекрасное будущееboric - прекрасное будущее
По умолчанию

Денежные данные нормальные программисты хранят в текстовом виде - в типе DECIMAL.
Цитата:
$c=10.20*100;
$sum=(string)$c;
Ответ будет 1020, как и должно быть.
boric вне форума   Ответить с цитированием
Старый 20.02.2011, 22:55   #14
Мастер
 
Аватар для dgek1111
 
Регистрация: 10.10.2008
Адрес: Одесса Мама
Сообщений: 947
Вес репутации: 244
dgek1111 - прекрасное будущееdgek1111 - прекрасное будущееdgek1111 - прекрасное будущееdgek1111 - прекрасное будущееdgek1111 - прекрасное будущееdgek1111 - прекрасное будущееdgek1111 - прекрасное будущееdgek1111 - прекрасное будущееdgek1111 - прекрасное будущееdgek1111 - прекрасное будущееdgek1111 - прекрасное будущее
По умолчанию

Цитата:
Сообщение от Последний Герой Посмотреть сообщение
такое ПО пишут только идиоты, которые не умеют считать и не понимают как данные хранятся в памяти.
Цитата:
Сообщение от Jimi Dini Посмотреть сообщение
вот почему-то норм программеры хранят деньги в целочисленных переменных, не используя всякие double и т.п.
Не понимаю зачем насиловать компьютер, и заставлять его считать числа с плавающей точкой.
Для финансовых вычислений, считаю, нет лучшего способа чем сразу сдвинуть точку на два знака вправо и оперировать всегда только целыми числами.

Добавлено через 2 минуты
Цитата:
Сообщение от boric Посмотреть сообщение
Денежные данные нормальные программисты хранят в текстовом виде - в типе DECIMAL.
Зачем? Если эти денежные данные надо все равно считать, а значит преобразовывать их из строки в число и обратно.

Последний раз редактировалось dgek1111; 20.02.2011 в 22:55. Причина: Добавлено сообщение
dgek1111 вне форума   Ответить с цитированием
Старый 20.02.2011, 23:47   #15
Bannеd
 
Регистрация: 17.09.2008
Сообщений: 6,446
Вес репутации: 369
Последний Герой - прекрасное будущееПоследний Герой - прекрасное будущееПоследний Герой - прекрасное будущееПоследний Герой - прекрасное будущееПоследний Герой - прекрасное будущееПоследний Герой - прекрасное будущееПоследний Герой - прекрасное будущееПоследний Герой - прекрасное будущееПоследний Герой - прекрасное будущееПоследний Герой - прекрасное будущееПоследний Герой - прекрасное будущее
По умолчанию

Цитата:
Сообщение от boric Посмотреть сообщение
Денежные данные нормальные программисты хранят в текстовом виде - в типе DECIMAL.
Цитата:
$c=10.20*100;
$sum=(string)$c;
Ответ будет 1020, как и должно быть.
в таком случае будет форматный вывод с точностью заданной в конфиге precission и это грубая ошибка для финансовых операций, ибо если в php.ini высокая точность или она изменена через ini_set раньше, то получится вот такой код
PHP код:
<?php
ini_set
('precision'100);
$c=10.20*100;
$sum=(string)$c;
?>
и будет хрень, строковая

Цитата:
Сообщение от dgek1111 Посмотреть сообщение
Не понимаю зачем насиловать компьютер, и заставлять его считать числа с плавающей точкой.
Для финансовых вычислений, считаю, нет лучшего способа чем сразу сдвинуть точку на два знака вправо и оперировать всегда только целыми числами.
посуточно начислять 1/3 рубля. как? возится с дробями? раз в три дня будет один рубль, но как к этому придти, если хранить только целые копейки? никак.

Цитата:
Сообщение от dgek1111 Посмотреть сообщение
Зачем? Если эти денежные данные надо все равно считать, а значит преобразовывать их из строки в число и обратно.
Вот вот. А вся ошибка в незнании, как машина обрабатывает числа с плавающей точкой.
Последний Герой вне форума   Ответить с цитированием
Старый 20.02.2011, 23:55   #16
Пожиратель черепашкоВ
 
Аватар для chahlic
 
Регистрация: 24.12.2008
Адрес: Телемелетрямдия
Сообщений: 4,739
Вес репутации: 395
chahlic - прекрасное будущееchahlic - прекрасное будущееchahlic - прекрасное будущееchahlic - прекрасное будущееchahlic - прекрасное будущееchahlic - прекрасное будущееchahlic - прекрасное будущееchahlic - прекрасное будущееchahlic - прекрасное будущееchahlic - прекрасное будущееchahlic - прекрасное будущее
По умолчанию

А как все хорошо начиналось

ПысЫ: где опрос, блин?
__________________
Смотри цены в САПе в своей валюте: плагин "Конвертер Валют" для ФФ.
chahlic вне форума   Ответить с цитированием
Старый 20.02.2011, 23:57   #17
Серьезный бизнес.
 
Аватар для Jimi Dini
 
Регистрация: 07.03.2008
Адрес: localhost
Сообщений: 2,254
Вес репутации: 319
Jimi Dini - прекрасное будущееJimi Dini - прекрасное будущееJimi Dini - прекрасное будущееJimi Dini - прекрасное будущееJimi Dini - прекрасное будущееJimi Dini - прекрасное будущееJimi Dini - прекрасное будущееJimi Dini - прекрасное будущееJimi Dini - прекрасное будущееJimi Dini - прекрасное будущееJimi Dini - прекрасное будущее
Отправить сообщение для Jimi Dini с помощью ICQ
По умолчанию

Цитата:
Сообщение от dgek1111 Посмотреть сообщение
Для финансовых вычислений, считаю, нет лучшего способа чем сразу сдвинуть точку на два знака вправо и оперировать всегда только целыми числами.
правильнее на 4 - и да, считать их как целые. так и делают в банковском софте
__________________
qwsa.ru - подъем по НЧ и СЧ, ускорение индексации
подписка на список прокси - prxy.ru
aswq.ru - обучение вебмастеров
Jimi Dini вне форума   Ответить с цитированием
Старый 21.02.2011, 00:00   #18
Эксперт
 
Регистрация: 05.03.2008
Сообщений: 1,095
Вес репутации: 249
boric - прекрасное будущееboric - прекрасное будущееboric - прекрасное будущееboric - прекрасное будущееboric - прекрасное будущееboric - прекрасное будущееboric - прекрасное будущееboric - прекрасное будущееboric - прекрасное будущееboric - прекрасное будущееboric - прекрасное будущее
По умолчанию

Последний Герой,
Цитата:
в таком случае будет форматный вывод с точностью заданной в конфиге precission и это грубая ошибка для финансовых операций
Ну разумеется надо для финансовых операций использовать форматированный строковый вывод с нужной точностью, а не как в примере. Я с пхп давно не работаю, но вроде там форматированный вывод должен быть.

Для хранения денежных типов специально преднезначен тип DECIMAL, а это по сути текстовый тип.
С сайта MySQL:
Цитата:
Часто приходится сталкиваться с такой проблемой, как точное представление денежных величин. В MySQL для представления таких величин необходимо использовать тип данных DECIMAL.
Я работаю с Питоном и Джанго - там в документации тоже рекомендуется денежные величины хранить в типе DECIMAL. В каких-то движках смотрел (вроде в Битриксе) - там тоже денежные типы в DECIMAL хранятся.

Цитата:
Зачем? Если эти денежные данные надо все равно считать, а значит преобразовывать их из строки в число и обратно.
Да, надо перед вычислением будет преобразовывать в float, но зато вы будете уверены, что денежные величины хранятся точно с заданной точностью.

Последний раз редактировалось boric; 21.02.2011 в 00:08.
boric вне форума   Ответить с цитированием
Старый 21.02.2011, 00:31   #19
Bannеd
 
Регистрация: 17.09.2008
Сообщений: 6,446
Вес репутации: 369
Последний Герой - прекрасное будущееПоследний Герой - прекрасное будущееПоследний Герой - прекрасное будущееПоследний Герой - прекрасное будущееПоследний Герой - прекрасное будущееПоследний Герой - прекрасное будущееПоследний Герой - прекрасное будущееПоследний Герой - прекрасное будущееПоследний Герой - прекрасное будущееПоследний Герой - прекрасное будущееПоследний Герой - прекрасное будущее
По умолчанию

Цитата:
Сообщение от Jimi Dini Посмотреть сообщение
правильнее на 4 - и да, считать их как целые
последние цифры всегда нули? зачем они. а если они не нули, тогда это уже не целые деньги.

Цитата:
Сообщение от boric Посмотреть сообщение
Для хранения денежных типов специально преднезначен тип DECIMAL, а это по сути текстовый тип.
проблема как раз в преобразовании в текст. именно на этом месте делается у всех ошибка. а разницы нет сначала преобразовать, потом сохранить и показать или сначала сохранить, потом преобразовать и показать.

Цитата:
Сообщение от boric Посмотреть сообщение
рекомендуется
вот оно ключевое слово.

Цитата:
Сообщение от boric Посмотреть сообщение
денежные величины хранятся точно с заданной точностью.
каким образом? мало просто иметь такую структуру хранения, нужно еще и правильно организовать запись.

главное понимать, денежные величины это штучный товар, который нам нужен в только результате, а в самом процессе вычисления до вывода можно использовать хоть проценты.
Последний Герой вне форума   Ответить с цитированием
Старый 21.02.2011, 00:31   #20
Эксперт
 
Регистрация: 05.03.2008
Сообщений: 1,095
Вес репутации: 249
boric - прекрасное будущееboric - прекрасное будущееboric - прекрасное будущееboric - прекрасное будущееboric - прекрасное будущееboric - прекрасное будущееboric - прекрасное будущееboric - прекрасное будущееboric - прекрасное будущееboric - прекрасное будущееboric - прекрасное будущее
По умолчанию

В Питоне даже модуль с типом Decimal есть для таких случаев. Сабжевый пример в питоне может выглядеть так:
Код:
from decimal import *

a = Decimal('10.20')
b = Decimal('100')
c = a * b
print c

Ответ: Decimal('1020.00')
Точность там можно настраивать.
boric вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Бесплатные консультации по сапе 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.