|
|
|
FastReport использует в форматировании банковское округление
|
|||
|---|---|---|---|
|
#18+
Был удивлен, когда по результатам отчетов не сходились копейки, и, проведя эксперимент, получилось, что FastReport использует в форматировании банковское округление. Значение 39,065 превращается в 39,06 при форматировании вида %2.2f. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2018, 17:17 |
|
||
|
FastReport использует в форматировании банковское округление
|
|||
|---|---|---|---|
|
#18+
svnvlad, Просто ты почему-то решил, что в исходных числах ("до округления") всего 4 знака после десятичной точки. А там - не 4 ;). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2018, 22:24 |
|
||
|
FastReport использует в форматировании банковское округление
|
|||
|---|---|---|---|
|
#18+
чччДsvnvlad, Просто ты почему-то решил, что в исходных числах ("до округления") всего 4 знака после десятичной точки. А там - не 4 ;). Там 4. Код: pascal 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2018, 01:29 |
|
||
|
FastReport использует в форматировании банковское округление
|
|||
|---|---|---|---|
|
#18+
А вот то же самое число без округлений и форматирования: 815039,06501 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2018, 01:32 |
|
||
|
FastReport использует в форматировании банковское округление
|
|||
|---|---|---|---|
|
#18+
BANK_ROUND здесь - хранимая функция. Не смущайтесь, можно ее заменить на ROUND, суть не в этом. А то, что там на входе отчета 4 знака. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2018, 01:38 |
|
||
|
FastReport использует в форматировании банковское округление
|
|||
|---|---|---|---|
|
#18+
чччД, провел эксперимент: Код: pascal 1. 2. Без форматирования отчет выводит эти же цифры 1.55 и 1.65. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2018, 01:48 |
|
||
|
FastReport использует в форматировании банковское округление
|
|||
|---|---|---|---|
|
#18+
Затем задаю формат вывода с 1 знаком после запятой: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2018, 01:49 |
|
||
|
FastReport использует в форматировании банковское округление
|
|||
|---|---|---|---|
|
#18+
и вуаля! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2018, 01:50 |
|
||
|
FastReport использует в форматировании банковское округление
|
|||
|---|---|---|---|
|
#18+
"Вуаля", ага. Глупыш, дробные десятичные числа нельзя точно представить в двоичной форме. И что там выводится - дело второе, главное - что там хранится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2018, 02:04 |
|
||
|
FastReport использует в форматировании банковское округление
|
|||
|---|---|---|---|
|
#18+
Котовасиядробные десятичные числа нельзя точно представить в двоичной форме. И что там выводится - дело второе, главное - что там хранится. Так устроит? Код: pascal 1. 2. А результат одинаковый: 1,6 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2018, 02:51 |
|
||
|
FastReport использует в форматировании банковское округление
|
|||
|---|---|---|---|
|
#18+
к слову, в базе у меня все поля с дробной частью - такого типа: DECIMAL(11, 5) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2018, 02:52 |
|
||
|
FastReport использует в форматировании банковское округление
|
|||
|---|---|---|---|
|
#18+
svnvlad, В чем смысл округлять внутри хранимой процедуры, если в итоге поле Double типа ? Такое число в любом случае будет представлять приближение исходного числа в вещественном типе. Для Double - 815039,06501 будет что-то вроде 815039,06499999999. Если поле округляется до 4х знаков запросом , то лучше будет использовать BCD. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2018, 02:59 |
|
||
|
FastReport использует в форматировании банковское округление
|
|||
|---|---|---|---|
|
#18+
Да и какая разница, если два способа, примененные к одному и тому же числу, выдают разный результат? 1. Если округлять в SQL-запросе: Код: sql 1. 2. Выдает 1,7. 2. Если округлять Код: sql 1. в FastReport-е, назначая формат %2.1f, получается 1,6. Фаст репорт округляет по-банковски. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2018, 03:00 |
|
||
|
FastReport использует в форматировании банковское округление
|
|||
|---|---|---|---|
|
#18+
по факту FR все четные 5 округляет в меньшую сторону, нечетные - в большую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2018, 03:04 |
|
||
|
FastReport использует в форматировании банковское округление
|
|||
|---|---|---|---|
|
#18+
svnvlad, По факту, FR ничего не округляет, метод округления зависит от типа и установленного флага. Код: pascal 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2018, 03:08 |
|
||
|
FastReport использует в форматировании банковское округление
|
|||
|---|---|---|---|
|
#18+
_DenZ__svnvlad, По факту, FR ничего не округляет, метод округления зависит от типа и установленного флага. Код: pascal 1. 2. 3. 4. 5. 6. fixed-формат делает банковское округление? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2018, 03:23 |
|
||
|
FastReport использует в форматировании банковское округление
|
|||
|---|---|---|---|
|
#18+
svnvlad, Какого типа TField у TDataSet ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2018, 12:07 |
|
||
|
FastReport использует в форматировании банковское округление
|
|||
|---|---|---|---|
|
#18+
_DenZ__... в итоге поле Double типа ? Такое число в любом случае будет представлять приближение исходного числа в вещественном типе. Для Double - 815039,06501 будет что-то вроде 815039,06499999999... +1. BCD, или Сurrency. Однако, тут дело бесполезное, человек про внутреннее представление знать не желает, хотя его уже трижды в одно место носом ткнули. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2018, 13:02 |
|
||
|
FastReport использует в форматировании банковское округление
|
|||
|---|---|---|---|
|
#18+
чччД_DenZ__... в итоге поле Double типа ? Такое число в любом случае будет представлять приближение исходного числа в вещественном типе. Для Double - 815039,06501 будет что-то вроде 815039,06499999999... +1. BCD, или Сurrency. Однако, тут дело бесполезное, человек про внутреннее представление знать не желает, хотя его уже трижды в одно место носом ткнули. Все так, внутреннее представление и т.д. Но на практике все работает так, как будто это четкое банковское округление. В итоге нужны практические последствия, внутреннее представление заказчика не интересует. Неужели это не повод уделить внимание такому феномену, чем его не глядя отметать, т.к. в теории это "не работает"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2018, 14:48 |
|
||
|
FastReport использует в форматировании банковское округление
|
|||
|---|---|---|---|
|
#18+
_DenZ__svnvlad, Какого типа TField у TDataSet ? Неизвестно. Типы полям не назначал, просто подключаю TADQuery к TDataSource и frxDBDataset и frxReport. Само поле DECIMAL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2018, 14:51 |
|
||
|
FastReport использует в форматировании банковское округление
|
|||
|---|---|---|---|
|
#18+
svnvlad, TUniQuery (select 1.65 as uttt) к TDataSource к frxDBDataset и frxReport (DisplayFormat(FormatStr='%2.1f', Kibnd=fkNumeric)) = 1.7 Ты у себя эитими не баловался: Set8087CW и Math.SetRoundMode? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2018, 16:23 |
|
||
|
FastReport использует в форматировании банковское округление
|
|||
|---|---|---|---|
|
#18+
Dmitri Krizhanovski, нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2018, 00:11 |
|
||
|
FastReport использует в форматировании банковское округление
|
|||
|---|---|---|---|
|
#18+
Я вообще не понимаю что мешает отправить в отчет уже подготовленные данные, в том виде в котором они должны быть отображены? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2018, 09:45 |
|
||
|
FastReport использует в форматировании банковское округление
|
|||
|---|---|---|---|
|
#18+
FastReport использует функцию Format(). У тебя претензии к Fastу, к Функции или к жизни ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2018, 15:02 |
|
||
|
FastReport использует в форматировании банковское округление
|
|||
|---|---|---|---|
|
#18+
Сейчас использует, потом не будет. имхо проще подготовить все данные и отдать их генератору отчета уже только для построения. Таким образом в отчете будут ровно те данные которые ты подготовил. Конечно могут возникать задачи при которых требуется обработка данных самим отчетом, но это явно не тот случай. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2018, 09:34 |
|
||
|
FastReport использует в форматировании банковское округление
|
|||
|---|---|---|---|
|
#18+
Dmitri Krizhanovskisvnvlad, TUniQuery (select 1.65 as uttt) к TDataSource к frxDBDataset и frxReport (DisplayFormat(FormatStr='%2.1f', Kibnd=fkNumeric)) = 1.7 Да, оказалось не всегда. С числом 59641,155 осечка вышла, фаст репорт округлил до 59641,15 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2018, 17:05 |
|
||
|
FastReport использует в форматировании банковское округление
|
|||
|---|---|---|---|
|
#18+
DimaBrFastReport использует функцию Format(). У тебя претензии к Fastу, к Функции или к жизни ??? Претензий не было, наоборот, обрадовался, что фаст репорт округляет уже так как надо. Но оказалось, не всегда. Придется в самом запросе уже округлять до необходимого разряда, и выводить готовые. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2018, 17:07 |
|
||
|
|

start [/forum/topic.php?all=1&fid=58&tid=2041010]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
157ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 241ms |
| total: | 484ms |

| 0 / 0 |
