powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Integer overflow при умножении 0.0007968127611093223 на... любые int-числа
25 сообщений из 32, страница 1 из 2
Integer overflow при умножении 0.0007968127611093223 на... любые int-числа
    #38512520
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот вроде бы давно я в третьем диалекте, но... what the foo ??

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
SQL> select 0.0007968127611093223 * 115 7  from rdb$database;

             MULTIPLY
=====================
0.9219123646034859011

SQL> select 0.0007968127611093223 * 115 8  from rdb$database;

             MULTIPLY
=====================
Statement failed, SQLSTATE = 22003
 Integer overflow.   The result of an integer operation caused the most significant bit of the result to carry.

Далее никакие дописывания десятичных знаков типа 1158 .000 не помогут, облом. Только cast(... as double) одного из сомножителей.

Как он тут получил int overflow и вытеснение бита знака ?..
...
Рейтинг: 0 / 0
Integer overflow при умножении 0.0007968127611093223 на... любые int-числа
    #38512521
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PS. название топега подправить бы надо: не любые int-числа, конечно же, но... "многие" :-)
...
Рейтинг: 0 / 0
Integer overflow при умножении 0.0007968127611093223 на... любые int-числа
    #38512525
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
умножь на калькуляторе 7968127611093223 на 1158 и убедись что в 64-битном результате (а больше ФБ не умеет) установлен старший (знаковый) бит. Вот тебе и переполнение.
...
Рейтинг: 0 / 0
Integer overflow при умножении 0.0007968127611093223 на... любые int-числа
    #38512548
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

к слову, maxlongint = 9223372036854775807. Видно что твой первый результат весьма недалеко от этого числа.
Да и вообще, в твоем первом результате уже 19 цифр...
...
Рейтинг: 0 / 0
Integer overflow при умножении 0.0007968127611093223 на... любые int-числа
    #38512586
NickDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oracle c MSSQL тоже выдают ошибку?
...
Рейтинг: 0 / 0
Integer overflow при умножении 0.0007968127611093223 на... любые int-числа
    #38512605
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickDeeOracle c MSSQL тоже выдают ошибку? m$ sql 2005 dev ed:
Код: plaintext
select 0.0007968127611093223 * 1157 d1, 0.0007968127611093223 * 1158 d2
d1d20.92191236460348590110.9227091773645952234

ora 11.2g:
Код: plaintext
1.
2.
3.
4.
select 0.0007968127611093223 * 1157 d1, 0.0007968127611093223 * 1158 d2 from dual;

        D1         D2
---------- ----------
.921912365 .922709177
...
Рейтинг: 0 / 0
Integer overflow при умножении 0.0007968127611093223 на... любые int-числа
    #38512615
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Расширь формат вывода у Оракула или приведи к строке на сервере.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Integer overflow при умножении 0.0007968127611093223 на... любые int-числа
    #38512633
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovРасширь формат вывода у Оракула или приведи к строке на сервере.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
column d1 format 9.99999999999999999999999999
column d2 format 9.99999999999999999999999999
select 0.0007968127611093223 * 1157 d1, 0.0007968127611093223 * 1158 d2 from dual;

                           D1                            D2
----------------------------- -----------------------------
  .92191236460348590110000000   .92270917736459522340000000
...
Рейтинг: 0 / 0
Integer overflow при умножении 0.0007968127611093223 на... любые int-числа
    #38512664
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У Оракула арифметика в NUMBER (ЕМНИП, 38 десятичных знаков). MS SQL скорее всего считает в
плавающих числах. Первое - тормозное, второе - приблизительное.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Integer overflow при умножении 0.0007968127611093223 на... любые int-числа
    #38512675
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

тем не менее, у Оракла и МС СКЛ вторые числа совпадают. Но что вычисления там больше 18 знаков - это да.
...
Рейтинг: 0 / 0
Integer overflow при умножении 0.0007968127611093223 на... любые int-числа
    #38512687
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvтем не менее, у Оракла и МС СКЛ вторые числа совпадают. Но что вычисления там
больше 18 знаков - это да.
Ну, значит, я был неправ насчёт плавающих. Лень сейчас гуглить внутреннее представление
чисел в MS SQL, но возможно, что оно совпадает с ODBC Numeric - 128 разрядное целое.
Арифметика с ним тоже не фунт изюма, но всё же попроще чем у Оракула.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Integer overflow при умножении 0.0007968127611093223 на... любые int-числа
    #38512699
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

как я понимаю, в ФБ 3.0 никакого увеличения разрядности чисел нет?
...
Рейтинг: 0 / 0
Integer overflow при умножении 0.0007968127611093223 на... любые int-числа
    #38513109
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovУ Оракула арифметика в NUMBER (ЕМНИП, 38 десятичных знаков). MS SQL скорее всего считает в
плавающих числах. Первое - тормозное, второе - приблизительное.да фиг с ним, с приблизительным (я про мс скл): как только идёт умножение вещественного числа на целое, результат в общем случае не будет целым, если мантисса не смогла уместить 63 бита. Почему ФБ, когда видит 0.0007968127611093223 * 1157, не кастует автоматом операнд (любой) к double precision ?
...
Рейтинг: 0 / 0
Integer overflow при умножении 0.0007968127611093223 на... любые int-числа
    #38513118
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидПочему ФБ, когда видит 0.0007968127611093223 * 1157, не кастует автоматом
операнд (любой) к double precision ?
Потому что наивно полагает, что пользователю нужен точный результат. И ещё более наивно -
что пользователь не идиот и знает что делает. Ну и с некоторым основанием - что её не
используют в ЦЕРНе, а в остальных местах чисел с такой разрядностью в природе не бывает.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Integer overflow при умножении 0.0007968127611093223 на... любые int-числа
    #38513218
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovеё не используют в ЦЕРНе, а в остальных местах чисел с такой разрядностью в природе не бывает.Расход изделия за год = 3 штуки, за день = 3/365.25 = 0,032854209445585200.
Цена изделия = 100 USD. Требуется подсчитать запас на 2 недели и на основе этого определить стоимость заказа у поставщега.
Вариант-1: 0,0328*14 * 100 = 45.92 USD
Вариант-2: 0,03285*14 * 100 = 45.99 USD
Дельта = 0.07 USD - копейки, правда ? А теперь умножь на 1000 позиций. И затем на 28 - это число двухнедельных интервалов в году, когда складской заказ делаем. А затем на число складов, которые делают такие заказы (10, например).
Если бы всё было так славно с 4-5 знаками после запятой, железный конь по имени Double не пришёл бы на смену деревянной лошадке по кличке Float.
...
Рейтинг: 0 / 0
Integer overflow при умножении 0.0007968127611093223 на... любые int-числа
    #38513237
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоидскладской заказ делаем.
В там в натуре заказываете поставщику 0,03285 изделия?.. О_О'
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Integer overflow при умножении 0.0007968127611093223 на... любые int-числа
    #38513244
miwaonline
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

Оффтоп, конечно, но я как-то пропустил момент - как вы собираетесь заказывать 0,0328 изделия? Это я к чему - может надо бы логику заказа пересмотреть, какой-нить АВС-анализ прикрутить?
...
Рейтинг: 0 / 0
Integer overflow при умножении 0.0007968127611093223 на... любые int-числа
    #38513249
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Dimitry Sibiryakov!
You wrote on 26 декабря 2013 г. 15:14:31:

Dimitry Sibiryakov> В там в натуре заказываете поставщику 0,03285 изделия?.. О_О'
видел у конкурентов систему учета, где основная единица
для бумаги и картона выставлена в тоннах.

оно конечно, при оптовой торговле таки ладно.
но когда к ним приходит розничный покупатель и просит
продать 2 листа картона формата А2, то и выходит вот такая поибень...

зы: а всё потому, что мало систему спроектировать, нужно ещё и юзеров
обучить основам ейного пользования и половой гигиены.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Integer overflow при умножении 0.0007968127611093223 на... любые int-числа
    #38513255
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да вы чё!... никаких дробей в заказываемом КОЛИЧЕСТВЕ нет :-)
Есть данные статистики продаж штук (целых) за ГОД (365.25 дня). Она делится на 365.25, дабы получить средний расход в 1 день. Это число (дробное) никак не соотносится с физической реальностью, кто же спорит. Но если его далее умножить на 7, 14 или 30 дней, то получим ожидаемый расход за этот период.
Упрощенно говоря, его и надо заказать (добавив неснижаемый остаток, ес-сно, но это к делу не относится).
В примере взято число 3 (три штуки) - намеренно малое число. Но к нему также применяется это правило, как и к изделиям тима фильтров-маслов-колодок, которые уходят по 10 тыс в год.
Консерваторию если и подправлять, то в поиске флуктуаций для изделий, у которых статистика является репрезентативной выборкой (от 100 штук в год). Но опять-таки это олффтоп.
...
Рейтинг: 0 / 0
Integer overflow при умножении 0.0007968127611093223 на... любые int-числа
    #38513258
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗЫ. я вообще не про количество заказа говорю, а про погрешность и то, как она повлияет на итоговую стоимость. И не самого заказа (конкретного документа), а именно финансовый итог работы логистич. службы за длительный период. На основе которого они там дальше принимают всякие судьбоносные решения.
...
Рейтинг: 0 / 0
Integer overflow при умножении 0.0007968127611093223 на... любые int-числа
    #38513269
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Таблоид!
You wrote on 26 декабря 2013 г. 15:29:59:

Таблоид> ЗЫ. я вообще не про количество заказа говорю, а про погрешность и то,
> как она повлияет на итоговую стоимость. И не самого заказа (конкретного
> документа), а именно финансовый итог работы логистич. службы за
> длительный период. На основе которого они там дальше принимают всякие
> судьбоносные решения.
для принятия решения даже double precission - ИЗБЫТОЧЕН.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Integer overflow при умножении 0.0007968127611093223 на... любые int-числа
    #38513289
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийдля принятия решения даже double precission - ИЗБЫТОЧЕН.обоснуй, плз.
...
Рейтинг: 0 / 0
Integer overflow при умножении 0.0007968127611093223 на... любые int-числа
    #38513295
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоидя вообще не про количество заказа говорю, а про погрешность и то, как она
повлияет на итоговую стоимость.
В любом случае количество заказываемых изделий будет округляться наверх до минимальной
партии поставщика. И на цену будет умножаться уже это округлённое значение. А если твои
приниматели решений любят опираться не на реальные числа заказов, а на всякую абстрактную
фигню, то бог им судья, как и говорит МП.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Integer overflow при умножении 0.0007968127611093223 на... любые int-числа
    #38513305
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ладно. Да здравствует "пи", равное строго 3.14 и ни грамма больше.
ЗЫ. а в яве длинную арифметику, в т.ч. BigDecimal, - её тоже для ЦЕРНа фигачили ? :-)
...
Рейтинг: 0 / 0
Integer overflow при умножении 0.0007968127611093223 на... любые int-числа
    #38513308
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где BigDecimal, а где "прикинуть" ...
...
Рейтинг: 0 / 0
25 сообщений из 32, страница 1 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Integer overflow при умножении 0.0007968127611093223 на... любые int-числа
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]