Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Опять про округление
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток. Помогите понять причину, на будущее? Есть ПО с небольшими расчетами. Считаем в процедурах на сервере. Точность не для космических полетов, но нужна. Когда-то перешел на rfunc, из-за его функции calcexpr - это при тестах решало проблему с округлением 0,5 (нормально считает, не думает, что 0.5 - это 0.49999999). Сегодня натолкнулись на проблему в ROUND, и во встроенной функции, и в той, что в rfunc: Код: sql 1. возвращает верно, 226598.21 ок Код: sql 1. 226598.205 - да, все ок, так и выходит но если объединить: Код: sql 1. - т.е., вычислить это значение, и сразу округлить, то почему-то, возвращает 226598.20, а не 226598.21 (( Обрамил calcexpr cast as Numeric(18,10) - начало считать правильно. Но почему сразу то не считает, ведь поэтапные проверки - все расчеты верные. И что-то мне подсказывает, что неправильно так делать. Или правильно? Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2017, 11:36 |
|
||
|
Опять про округление
|
|||
|---|---|---|---|
|
#18+
Devillio, А calcexpr это самописная хранимка? У выходного параметра какой тип? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2017, 12:55 |
|
||
|
Опять про округление
|
|||
|---|---|---|---|
|
#18+
KreatorXXI, DECLARE EXTERNAL FUNCTION CALCEXPR CSTRING(16383), CSTRING(16383) RETURNS DOUBLE PRECISION BY VALUE это функция из готовой библиотеки rFunc ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2017, 13:23 |
|
||
|
Опять про округление
|
|||
|---|---|---|---|
|
#18+
Devillio, потому что RETURNS DOUBLE PRECISION BY VALUE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2017, 13:27 |
|
||
|
Опять про округление
|
|||
|---|---|---|---|
|
#18+
Симонов Денис, Ну и что? В описании round сказано, что возвратить может и BIGINT. Devillio, версия FB? Может в этом дело? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2017, 14:24 |
|
||
|
Опять про округление
|
|||
|---|---|---|---|
|
#18+
KreatorXXI, так происходит на 2.5 и на 3.0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2017, 14:29 |
|
||
|
Опять про округление
|
|||
|---|---|---|---|
|
#18+
KreatorXXI, Devillio226598.205 - да, все ок, так и выходит потому что сам вывод уже округлённый (IBE округляет при отображении в гриде) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2017, 14:37 |
|
||
|
Опять про округление
|
|||
|---|---|---|---|
|
#18+
Симонов Денис, да, спасибо. И правда, результат 226598,204999999958... Блин! Да как считать-то )))) Правильно везде cast с нужной точностью впихивать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2017, 14:53 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=39531499&tid=1561396]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
67ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
2ms |
| others: | 14ms |
| total: | 166ms |

| 0 / 0 |
