Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2019.01.13;
Скачать: [xml.tar.bz2];

Вниз

Странности DisplayFormat   Найти похожие ветки 

 
Дмитрий   (2016-10-13 17:03) [0]

Задаю разные вариации ("0.0%","##0.0%","###.#%") формата отображения поля через свойство DisplayFormat в списке полей датасета, чтобы ограничить количество знаков после запятой
В результате некоторые значения отличаются в приложении от значения в QweryEditor.
Например, в QweryEditor значение 59.9960788248309, в гриде выводится как "6%"
Куда рыть?

WinXP-Win10
D7, Free-AnyDAC


 
iop ©   (2016-10-13 17:12) [1]

Например, в QweryEditor значение 59.9960788248309, в гриде выводится как "6%"

так и должно быть


 
Дмитрий   (2016-10-13 17:27) [2]

При этом 59.80493 выводится как 59,8%
Не понимаю логику, что мне нужно изменить в формате?


 
iop ©   (2016-10-13 17:33) [3]

справку читал?
последний параграф.


 
Дмитрий   (2016-10-14 18:24) [4]

To allow different formats for positive, negative, and zero values, the format string can contain between one and three sections separated by semicolons.

One section: The format string applies to all values.
Two sections: The first section applies to positive values and zeros, and the second section applies to negative values.
Three sections: The first section applies to positive values, the second applies to negative values, and the third applies to zeros.

If the section for negative values or the section for zero values is empty, that is, if there is nothing between the semicolons that delimit the section, the section for positive values is used instead.

If the section for positive values is empty, or if the entire format string is empty, the value is formatted using general floating-point formatting with 15 significant digits. General floating-point formatting is also used if the value has more than 18 digits to the left of the decimal point and the format string does not specify scientific notation.

{Если секция для положительных значений пуста, или если вся строка формата пуста, то значение форматируется с помощью общего форматирования с плавающей запятой с 15 значащими цифрами. Общее форматирование с плавающей запятой также используется, если значение имеет более чем 18 цифр слева от десятичной точки, а строка формата не определяет научную запись.}

18 знаков после запятой не имеется, что из последнего абзаца относится к моему случаю?


 
Дмитрий   (2016-10-14 18:35) [5]

Уточню, если не точно выразился, что указанные разные вариации формата("0.0%","##0.0%","###.#%") задавались по-очереди, а не одновременно.
Это не три секции формата, а одна, единственная.
Либо одна, либо другая и т.д.


 
icWasya ©   (2016-10-17 11:01) [6]

Ну так и указывайте в формате четыре цыфры после запятой "0.0000"


 
Дмитрий   (2016-10-17 17:06) [7]

1) мне не нужны четыре цифры после запятой
мне нужна только одна
2) даже указав 4 знака, проблема не будет исключена
хотя и будет реже возникать

Куда девается ноль, хотя во всех форматах он предусмотрен.
Почему "так и должно быть", что значение 59.9960788248309, в гриде выводится как "6%"


 
Германн ©   (2016-10-18 01:30) [8]


> в гриде выводится как "6%"

В каком "гриде"?


 
sniknik ©   (2016-10-18 09:54) [9]

да, так чтобы 60 в 6 форматированием превратило... не бывает такого, если только где-то нет кривых "велосипедов", и не только в гриде это может быть, база, датасет, тип данных не поддерживаемый, и т.д. из х.з. что.

попробуй на стандартных, и базу не подключай, просто создай клиентский датасет с полем типа флоат. 0.0% из 59.9960788248309 должен сделать 60,0% (запятая или точка в зависимости от региональный настроек)


 
Дмитрий   (2016-10-18 15:02) [10]


> Германн ©   (18.10.16 01:30) [8]
> > в гриде выводится как "6%"
В каком "гриде"?

TDBGridEh


 
Дмитрий   (2016-10-18 15:12) [11]


> sniknik ©   (18.10.16 09:54) [9]

На отдельной форме положил датасет TADQuery (AnyDac) с запросом
select 59.9960788248309 as F1
Добавил поле F1, установил DisplayFormat
"0.0"
Активирую датасет, в гриде (TDBGridEh) тут же отображается
"6"
Без нуля в дробях, без  десятичной точки и без нуля в единицах


 
Дмитрий   (2016-10-18 15:19) [12]

Положил TADODataset с тем же запросом
Вывелось как положено "60,0"


 
Дмитрий   (2016-10-18 16:03) [13]

Поле F1 в TADQuery при создании получило тип FmtBCDField
Попытка принудительно создать поле F2 типа Float привела к сообщению об ошибке
Type mismatch for field "f2", expecting: Float actual: FMTBcdField.


 
ухты_   (2016-10-18 16:44) [14]

закастить пррбовали? типа cast(59.9965186 as float)


 
Игорь Шевченко ©   (2016-10-18 18:53) [15]


> Поле F1 в TADQuery при создании получило тип FmtBCDField


Never attribute to malice...


 
Дмитрий   (2016-10-21 18:38) [16]

Быстрое решение путем округления в запросе понятно.
Хотелось бы найти способ "запатчить" проблему в самом датасете.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2019.01.13;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.002 c
11-1267550254
Gyurza
2010-03-02 20:17
2019.01.13
Анимированная иконка в трее


4-1252357661
Moff20
2009-09-08 01:07
2019.01.13
Работа оо сканером


2-1477150686
валя
2016-10-22 18:38
2019.01.13
Не старндарный массив


2-1476199440
QAZ
2016-10-11 18:24
2019.01.13
строка как объект в коде


2-1476918568
Artem78
2016-10-20 02:09
2019.01.13
Событие Change у TCollection





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский