Коллеги, объясните, пожалуйста почему при вводе цены с копейками, например, в документе-основании Галактика заносит в Spstep.price не 47.67, а 47,6699999999999917.
Настройки округления не помогают, если конечно не округлить до целого числа. Почему в поле Spstep.price не заносится цифра, которую я набираю с клавиатуры? Никто не разобрался по какому алгоритму заносятся числа? Или это глюк Btrieve? Прияем закономерности нет никакой, может занести дробное число, как набрано с клавиатуры, а может последнюю цифру растащить до 16 знака после запятой. Кто не сталкивался с этой проблемой- станьте на поле с ценой и нажмите Ctrl+F4 (вызов вычислителя)и увидите число которое реально записано в таблице....
Опять про округление....
Модераторы: m0p3e, edward_K, Модераторы
-
- Местный житель
- Сообщения: 278
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Москва
- Контактная информация:
Re: Опять про округление....
А никто не знает по какому алгоритму они вносятся. Например 1,5 один раз может "занестись" как 1,5000000000001, а в другой раз как 1,499999999888. :-/ Когда только начинал работать с Галкой, в ДТП получил такой ответ - числа описаны как DOUBLE, поэтому что там происходит.. ??? ??? ??? ??? На сем успокоился. И больше не выясняю.
Re: Опять про округление....
Это именно трабла double! И не только Бетрив. Столкнулся когда писал на дельфях учет семейного бюджета. Типа домашней бухгалтерии. БД брал Paradox и dBase. В обеих наталкивался на такой эффект. Пришлось округлять при выборе данных до 2-х знаков.
-
- Сообщения: 1
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: РБ, обл. г. Гродно ФОРТУНА
- Контактная информация:
Re: Опять про округление....
1,5000000000001 или 1,499999999888 - какая разница
добави в cfg
[Common]
DeltaDouble=0.00001
и у тебя будет 1,5 (в расчетах)
и неважно что он там по Ctrl+F4 пишет
добави в cfg
[Common]
DeltaDouble=0.00001
и у тебя будет 1,5 (в расчетах)
и неважно что он там по Ctrl+F4 пишет