imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Компьютеры > Программирование
Опции темы
Старый 25.09.2006, 15:29     # 1
PakMan
Junior Member
 
Регистрация: 22.04.2004
Адрес: Мурманск
Сообщения: 59

PakMan Путь к славе только начался
Проблема с округлением в Delphi

Суть проблемы. Вот допустим я хочу распечтать данные из таблицы в неком отчете. б.о - без округления с.о.- с округлением

Наименование Цена б.о Цена с.о.

1 759,5 760
2 151,9 152
3 110,74 111
4 203,84 204
5 252,84 253
6 232,26 232

Итого: 1711,08 руб 1712 руб.

Разница в 1 рубль. Delphi при сложении и округлении дает итоговую 1711 рублей, но если просуммировать колонку со скидкой получаем 1712 рублей. Чему верить? Как избежать такой погрешности?
P.S. Программа для учета и реализации товаров на складе.
PakMan вне форума  
Старый 25.09.2006, 15:52     # 2
crawler
Full Member
 
Регистрация: 11.12.2002
Сообщения: 864

crawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собойcrawler Имеются все основания чтобы гордиться собой
Возьми и сложи 10 раз по 0.5.
В колонке без округления получается 5 , а с округлением 10.
Как ты думаешь чему верить ?

Последний раз редактировалось crawler; 25.09.2006 в 15:56.
crawler вне форума  
Старый 25.09.2006, 23:39     # 3
Willow
Junior Member
 
Регистрация: 23.12.2003
Адрес: Киев
Сообщения: 118

Willow Реально крут(а)Willow Реально крут(а)Willow Реально крут(а)Willow Реально крут(а)
Я чесно говоря не понял где ошибка:
В одном случае суммируются неокругленные величины - резльтат такой-то,
В другом округленные - резуьтат такой-то. То что эти результаты разные это нормально. Просто надо ЗАРАНЕЕ определить что должна выводить программа.

P.S. Как по мне округлять в данной ситуации можно (а нужно ли?) только конечную сумуу - суммировать неокругленные величины.
Willow вне форума  
Старый 27.09.2006, 01:41     # 4
AndNot
Guest
 
Сообщения: n/a

Цитата:
PakMan:
Чему верить? Как избежать такой погрешности?
P.S. Программа для учета и реализации товаров на складе.
Дело в том, что сам формат вещественных чисел подразумевает погрешность, поэтому я делал проще. Деньги хранил в копейках. А при выводе соответственно переводил в рубли. Но! Не используй вещественный формат, иначе возможны случаи "недочета", храни в целочисленном QWORD. Если скорость не устраивает то для перевода в рубли можно и асм заюзать, это несложно.
 
Старый 29.09.2006, 17:25     # 5
Blacky
Guest
 
Сообщения: n/a

Учим матчасть:
http://www.delphikingdom.com/asp/vie...?catalogid=374
http://www.delphikingdom.com/asp/vie...catalogid=1217
 
Старый 26.01.2009, 03:02     # 6
syserg
Guest
 
Сообщения: n/a

Округление чисел согласно ГОСТ

Правильное, согласно ГОСТу, округление чисел
http://g-soft.nm.ru/download.htm
 
Старый 26.01.2009, 17:00     # 7
leon534
::VIP::
 
Аватар для leon534
 
Регистрация: 10.07.2004
Адрес: Москва
Пол: Male
Сообщения: 2 030

leon534 Простой бог
leon534 Простой богleon534 Простой богleon534 Простой богleon534 Простой богleon534 Простой богleon534 Простой богleon534 Простой богleon534 Простой богleon534 Простой богleon534 Простой богleon534 Простой богleon534 Простой богleon534 Простой богleon534 Простой богleon534 Простой богleon534 Простой богleon534 Простой бог
Это довольно общая проблема для всех, кто пишет бухгалтерские программмы. Читал, что 1С пришлось полностью писать свои библиотеки. Я когда-то еще в DOS тоже писал специальные модули. Сравнивал первую отбрасываемую цифру с 5. Ну и ещё всякие усложнения из-за внутренних валютных цен, налогов. По налогам же свои итоги подводятся ... Выяснили тогда, что налог в строке документа печатается к сведению, а итоговый берется от итоговой суммы. Особенно неприятная возня была с дробными количествами товара
leon534 вне форума  

Опции темы

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

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

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


Часовой пояс GMT +4, время: 01:34.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.