powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Казус с банковским округлением
8 сообщений из 33, страница 2 из 2
Казус с банковским округлением
    #39632671
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем получилось вот так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
CREATE DEFINER = 'my'@'%' FUNCTION `bank_round`(
        `x` DECIMAL(20,5),
        `d` INTEGER(1)
    )
    RETURNS DECIMAL(20,4)
    NOT DETERMINISTIC
    CONTAINS SQL
    SQL SECURITY DEFINER
    COMMENT ''
BEGIN
    DECLARE i INTEGER(1);
	
    SET x = x * POWER(10, d);
      
    IF ROUND(x)-x = 0.5 THEN 
        IF MOD(ROUND(x), 2) = 0 THEN 
   	    SET x = ROUND(x);
        ELSE
            SET x = TRUNCATE(x, 0);
       	END IF;
    ELSE 
    	SET x = ROUND(x);
    END IF;
    
    SET x = x / POWER(10, d);
    
    RETURN x;
END;
...
Рейтинг: 0 / 0
Казус с банковским округлением
    #39632675
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
i можно убрать, осталось от старой версии с циклом)
...
Рейтинг: 0 / 0
Казус с банковским округлением
    #39632691
Tactical Nuclear Penguin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на Delphi непохоже что-то...
...
Рейтинг: 0 / 0
Казус с банковским округлением
    #39632702
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tactical Nuclear Penguinна Delphi непохоже что-то...
MySQL.
Отчет в дельфи выводится, саму функцию написал в самой базе.
...
Рейтинг: 0 / 0
Казус с банковским округлением
    #39633149
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svnvlad
Код: sql
1.
NOT DETERMINISTIC

С чего это вдруг?
...
Рейтинг: 0 / 0
Казус с банковским округлением
    #39633265
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_svnvlad
Код: sql
1.
NOT DETERMINISTIC

С чего это вдруг?
Не вникал, просто по умолчанию взял то, что MYSQL Manager предложил. А на что это повлияет? (заменил на DETERMINISTIC). Работает и так, и так.)
...
Рейтинг: 0 / 0
Казус с банковским округлением
    #39633268
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос - если в MySQL можно оперировать с DECIMAL-значениями, у которых точное представление, то какой тип переменной лучше использовать для банковских вычислений в Delphi? А то ведь действительно может неправильно округление работать.
...
Рейтинг: 0 / 0
Казус с банковским округлением
    #39633274
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сорри, затупил, Currency-же.
...
Рейтинг: 0 / 0
8 сообщений из 33, страница 2 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Казус с банковским округлением
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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