|
|
|
Функции left, right и банковское округление
|
|||
|---|---|---|---|
|
#18+
Читаю страницу с офсайта про функцию Left http://www.firebirdsql.org/refdocs/langrefupd25-intfunc-left.html Там следующее: авторIf the length argument is not a whole number, bankers' rounding (round-to-even) is applied, i.e. 0.5 becomes 0, 1.5 becomes 2, 2.5 becomes 2, 3.5 becomes 4, etc. Т.е. округление аргумента length банковское (до ближайшего целого). Начинаю проверять: Код: sql 1. Результат: '1' Хотя ожидаю пустую строку. Затем Код: sql 1. Результат: '123' Хотя по заявлению в документации "2.5 becomes 2" и результат должен быть '12' Версия FB: 2.5.2.26540 У меня ошибка в рассуждениях или писать в трекер? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2013, 15:05:47 |
|
||
|
Функции left, right и банковское округление
|
|||
|---|---|---|---|
|
#18+
Описка авторТ.е. округление аргумента length банковское (до ближайшего целого). Читать как: Т.е. округление аргумента length банковское (до ближайшего четного). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2013, 15:18:31 |
|
||
|
Функции left, right и банковское округление
|
|||
|---|---|---|---|
|
#18+
OFF: Видимо я чего-то не понимаю в этой жизни. Но какого ... придумывать банковское округление длины запрашиваемого результата? Тот, кто писал эту SDF какой бизнес-кейс в голове держал для этого случая? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2013, 15:20:27 |
|
||
|
Функции left, right и банковское округление
|
|||
|---|---|---|---|
|
#18+
Сдаётся мне, это чья-то отсебятина в "Firebird 2.5 Language Reference Update" В оригинальном README.builtin_functions.txt об этом нет ни слова. В коде второй аргумент вычисляется как обычное число и нет никаких специальных действий над результатом вычислений. Отсюда следует, что литерал 0.5 будет преобразован в целое число согласно правилам текущего диалекта БД. PS я не понимаю - назачем пихать не целые аргументы в LEFT ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2013, 15:29:55 |
|
||
|
Функции left, right и банковское округление
|
|||
|---|---|---|---|
|
#18+
hvlad, я тоже удивлен, зачем пихать банковское округление в аргумент, да и вообще, зачем туда принимать числа с дробями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2013, 15:50:22 |
|
||
|
Функции left, right и банковское округление
|
|||
|---|---|---|---|
|
#18+
Мне было бы все-равно... Только понадобилось банковское округление, которого в виде функции в FB нет. Нагуглил только UDF и в мануале по FB в этих функциях. Дай думаю проверю, а тут такое :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2013, 06:34:30 |
|
||
|
Функции left, right и банковское округление
|
|||
|---|---|---|---|
|
#18+
Подсмотрел у ораклоидов функцию банковского округления http://www.tek-tips.com/viewthread.cfm?qid=1487672 Перевел в FB, вдруг кому пригодится Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2013, 07:45:01 |
|
||
|
Функции left, right и банковское округление
|
|||
|---|---|---|---|
|
#18+
Какое еще округление, если у тебя результат double, т.е. не точный ? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2013, 10:41:36 |
|
||
|
Функции left, right и банковское округление
|
|||
|---|---|---|---|
|
#18+
Сисдба Мастеркеевич, Второй параметр rnd_digit это разряд после запятой, до которого округлять и результат при rnd_digit>0 вещественное число, округленное до rnd_digit разрядов. Сможешь написать лучше, велкам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2013, 15:06:02 |
|
||
|
Функции left, right и банковское округление
|
|||
|---|---|---|---|
|
#18+
AtanasСисдба Мастеркеевич, Второй параметр rnd_digit это разряд после запятой, до которого округлять и результат при rnd_digit>0 вещественное число, округленное до rnd_digit разрядов. Сможешь написать лучше, велкам. Намек то был про то что Double - это число с плавающей точкой ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2013, 15:11:21 |
|
||
|
Функции left, right и банковское округление
|
|||
|---|---|---|---|
|
#18+
m7m, Намек я понял. Но динамически стряпать на выходе decimal с нужной точностью, в зависимости от rnd_digit, тоже возможности нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2013, 15:13:47 |
|
||
|
Функции left, right и банковское округление
|
|||
|---|---|---|---|
|
#18+
Atanas, Decimal пофигу, что ты там стряпаешь про его точность, и он всё равно будет полный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2013, 15:32:28 |
|
||
|
Функции left, right и банковское округление
|
|||
|---|---|---|---|
|
#18+
WildSery, Процедура ведь небольшая. Ну и поправили бы. Нет, все будут тыкать в double precision, а сделать лучше ни один не взялся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2013, 14:36:48 |
|
||
|
Функции left, right и банковское округление
|
|||
|---|---|---|---|
|
#18+
AtanasПроцедура ведь небольшая. Ну и поправили бы. Нет, все будут тыкать в double precision, а сделать лучше ни один не взялся.Кому надо, тот делает, либо оплачивает работу. Давай внятное ТЗ, размер компенсации, полагаю желающие найдутся, чтоб лучше искались могу отправить топик в "работу". Ваня Сусанина я знаю теперьДа про тебя тоже уже все знают, тоже мне сакральное знание. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2013, 15:13:53 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=38487549&tid=1564021]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
181ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 225ms |
| total: | 498ms |

| 0 / 0 |
