Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Банковское округление средствами MySQL
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Можно ли реализовать банковское округление средствами MySQL? Денежные поля у меня идут с 4 знаками после запятой, а для вывода бухгалтерия требует округлять до 2 знаков. И в результате при суммировании и выводе на 1 копейку не сходится. Это, говорят, известная проблема в банковском деле, которая значительно сокращается при банковском округлении, когда 5 с четными сотыми округляется в меньшую сторону, с нечетными - в большую. Можно ли как-то это сделать с помощью MySQL? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2018, 10:07 |
|
||
|
Банковское округление средствами MySQL
|
|||
|---|---|---|---|
|
#18+
svnvladсокращается при банковском округлении, когда 5 с четными сотыми округляется в меньшую сторону, с нечетными - в большую.Это ложь. Та самая, которая статистика. svnvladМожно ли как-то это сделать с помощью MySQL?Для начала - какой именно тип округляемого значения? Ибо, согласно мануалу: https://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html#function_round For exact-value numbers, ROUND() uses the “round half away from zero” or “round toward nearest” rule: A value with a fractional part of .5 or greater is rounded up to the next integer if positive or down to the next integer if negative. (In other words, it is rounded away from zero.) A value with a fractional part less than .5 is rounded down to the next integer if positive or up to the next integer if negative. For approximate-value numbers, the result depends on the C library. On many systems, this means that ROUND() uses the "round to nearest even" rule: A value with any fractional part is rounded to the nearest even integer. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2018, 10:20 |
|
||
|
Банковское округление средствами MySQL
|
|||
|---|---|---|---|
|
#18+
AkinaFor approximate-value numbers, the result depends on the C library. On many systems, this means that ROUND() uses the "round to nearest even" rule: A value with any fractional part is rounded to the nearest even integer.[/quot] Что есть C library? SELECT ROUND(0.025, 2), ROUND (0.035, 2) выдает результат 0.03 и 0.04 соответственно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2018, 10:25 |
|
||
|
Банковское округление средствами MySQL
|
|||
|---|---|---|---|
|
#18+
Akina, т.е. на одних системах ROUND работает как обычно, на других как банковское? Почему такой произвол? Должно же быть единообразие. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2018, 10:39 |
|
||
|
Банковское округление средствами MySQL
|
|||
|---|---|---|---|
|
#18+
svnvladSELECT ROUND(0.025, 2), ROUND (0.035, 2) выдает результат 0.03 и 0.04 соответственно. Код: sql 1. 2. 3. 4. 5. 6. 7. svnvladт.е. на одних системах ROUND работает как обычно, на других как банковское? Почему такой произвол? Должно же быть единообразие.Расскажи это тем, кто пишет используемые при компиляции библиотеки функций. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2018, 10:48 |
|
||
|
Банковское округление средствами MySQL
|
|||
|---|---|---|---|
|
#18+
Akina, округляемые поля типа DECIMAL(11,5) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2018, 10:57 |
|
||
|
Банковское округление средствами MySQL
|
|||
|---|---|---|---|
|
#18+
SELECT ROUND(CAST(0.025 AS DECIMAL(11,5)), 2), ROUND(CAST(0.035 AS DECIMAL(11,5)), 2) Результат 0,03 и 0,04 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2018, 11:09 |
|
||
|
Банковское округление средствами MySQL
|
|||
|---|---|---|---|
|
#18+
svnvladокругляемые поля типа DECIMAL(11,5) То есть, в классификации документации, точные (exact-value numbers) - поэтому округление выполняется по арифметическим правилам. К сожалению, CAST/CONVERT не имеют типа приведения к FLOAT/DOUBLE типу. Всё, что можно предложить - это изменение типа поля на DOUBLE. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2018, 11:27 |
|
||
|
Банковское округление средствами MySQL
|
|||
|---|---|---|---|
|
#18+
AkinaВсё, что можно предложить - это изменение типа поля на DOUBLE. Может можно функцию в БД написать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2018, 11:55 |
|
||
|
Банковское округление средствами MySQL
|
|||
|---|---|---|---|
|
#18+
Можно, пиши... типа MyRound(val) = Round(val/2)*2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2018, 12:30 |
|
||
|
Банковское округление средствами MySQL
|
|||
|---|---|---|---|
|
#18+
Кстати, эта же формула объясняет, почему утверждения о бОльшей точности расчётов при булгахтерском округлении есть голимый бред. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2018, 12:31 |
|
||
|
Банковское округление средствами MySQL
|
|||
|---|---|---|---|
|
#18+
Я с детства, когда на математике объяснили правила округления, не понимал, почему 5 округляется всегда в большую сторону, ведь оно ровно посередине между 0 и 1. Оно действительно не должно округляться всегда в большую сторону, это неправильно. Поэтому банковское округление представляется более справедливым. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2018, 13:37 |
|
||
|
Банковское округление средствами MySQL
|
|||
|---|---|---|---|
|
#18+
То, что в Казахстане приняли закон об арифметическом округлении автор 5-1. Установить, что при наличной форме платежей, за исключением выплат, предусмотренных пунктом 5 настоящего Указа, применяется арифметический метод округления суммы платежей (сумму тиын до 50 тиынов округлять до 0; от 50 тиын и выше округлять до 1 тенге). больше похоже на "а давайте за...ним вот так, и все тут". Объяснить почему они решили именно так, они не смогут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2018, 13:41 |
|
||
|
Банковское округление средствами MySQL
|
|||
|---|---|---|---|
|
#18+
svnvladЗдравствуйте! Можно ли реализовать банковское округление средствами MySQL? Можно. svnvladДенежные поля у меня идут с 4 знаками после запятой, а для вывода бухгалтерия требует округлять до 2 знаков. Требуют -- округляй. svnvlad И в результате при суммировании и выводе на 1 копейку не сходится. Это, говорят, известная проблема в банковском деле, которая значительно сокращается при банковском округлении, когда 5 с четными сотыми округляется в меньшую сторону, с нечетными - в большую. Можно ли как-то это сделать с помощью MySQL? Можно. На самом деле тебе не нужны ДЕНЕЖНЫЕ поля. Тебе нужны поля с типом что-то вроде numeric(20,2) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2018, 14:46 |
|
||
|
Банковское округление средствами MySQL
|
|||
|---|---|---|---|
|
#18+
MasterZivНа самом деле тебе не нужны ДЕНЕЖНЫЕ поля. Тебе нужны поля с типом что-то вроде numeric(20,2) NUMERIC(11,5) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2018, 15:20 |
|
||
|
Банковское округление средствами MySQL
|
|||
|---|---|---|---|
|
#18+
Ну вообще-то DECIMAL и NUMERIC - это в понятиях MySQL синонимы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2018, 15:27 |
|
||
|
|

start [/forum/moderation_log.php?user_name=SergeyKalmykov]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
35ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
| others: | 445ms |
| total: | 599ms |

| 0 / 0 |
