Форум: "Начинающим";
Текущий архив: 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