| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C++ Builder > ошибка округления ADO |
| Автор: stmamont 29.4.2007, 20:00 |
| база данных хранит число типа real например 123.1 если я делаю запрос (через адо конечно же), а потом double t = mQuery->FieldByName("limit1")->AsFloat; то в t лежит что то типа 123.99992234532 Как мне сделать что бы отображалось нормально? В DataGrid таже самая проблема. Очень нужно решение этой мини проблемки) |
| Автор: Klin 29.4.2007, 20:53 |
| ИМХО компьютер не хранит число 4, он хранит, что-то типа 3,99987 |
| Автор: stmamont 29.4.2007, 21:00 |
| когда делаю запрос через phpPgSql - все так и есть как записал т.е. 123.1 а когда отображаю инфу через ADO , то получается такой бред. как мне отображать нормально, т.е. 123.1? |
| Автор: codelord 29.4.2007, 21:40 | ||
вот накидал функцию,
|
| Автор: Vyacheslav 29.4.2007, 22:35 |
Это ошибка не гриде, а в голове, когда полагают, что предствление числа в бинарном виде и форма вывода числа - это одно и то же. И для чего? Конкретная задача должна иметь конкретное и простое решение. Посказка. 1. Для TQuery можно создать колекцию требуемых TField в дизайне. Кстати , профессионалы именно так обычно и делают. А для Field можно задать требуемый форма вывода: например фиксированный с двумя цифрами после запятой. |
| Автор: stmamont 29.4.2007, 23:33 | ||||
| codelord, для округления числа есть функция RoundTo из Math.hpp Vyacheslav, да понимаю я что проблемы не в хранении числа, а в выводе, у меня и TQuery создается во время выполнения программы... как задать постоянный формат для Fields сразу после кода, где создается TQuery? ? я попробовал сделать так:
а потом делать SQL запрос, но у меня не получилось,
на последней строчке ругается на то что Field "id" не найдено |
| Автор: FFFFFFF7 30.4.2007, 20:11 |
его нет в объекте, хоть и есть в запрсе. прочитайте внимательнее. лол //по сабжу: На крайняк есть RoundTo(). |
| Автор: stmamont 1.5.2007, 07:43 | ||
| FFFFFFF7, а это что?
я добавил id ага. по всей программе, во всем полях и datagrid'ах. прикольно наверное. больше интересует решенеи с предустановкой TFields после создания кода. Помогите! почему мой код не работает??? завтра уже нужно показать, а тут такой косяк!!! |
| Автор: stmamont 2.5.2007, 08:39 | ||||
| В общем, у меня "почти" получилось сделать то, что я хотел. Делается это следующим образом в моем случае
и после этого, делаю sql запрос и продолжаю работать. Отображение в DataGrid'е, DBEdit'е теперь именно такое как нужно. Но когда я пробую
все по старому Вопрос: Как сделать чтобы DisplayFormat распространялся не только на DataControls? |
| Автор: Vyacheslav 2.5.2007, 11:54 | ||||
Эхх
Добавлено через 7 минут и 34 секунды Кстати, для гибкости работы с полями существуют еще события
С помощью которых, можно вообще подменять то, что будет выводится в контролах. |
| Автор: bas 2.5.2007, 12:14 | ||
Добавлено через 2 минуты и 26 секунд А почему не воспользоваться CAST в запросе? |