Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

выборка float из mysql [D7, 2000, XP]


morda ©   (2006-10-19 05:48:00) 

Всех приветствую. Столкнулся с такой проблемой:
подключаюсь из delphi-программы к mysql через ADO+ODBC. в таблице есть несколько полей типа float. выбираю все поля в dbgrid. Потом обращаюсь к полю которое равно например 0,31:

dbgrid1.DataSource.DataSet.Fields.FieldByNumber(i).asfloat

получаю 0,310000002384186

как так 0,31  = 0,310000002384186 ;  0,32 = 0,319999992847443 ?
как взять правильное число (буду очень признателен за код)


Anatoly Podgoretsky   (2006-10-19 18:49:00) [1]


> Ну в мускле тогда зайти и настроить float до какого символа
> записывать флоат в ту колонку, из которой он берёт значение.
> ..

А что у него числа с плавающей запятой, с неплавающей запятой.


Johnmen   (2006-10-19 09:21:00) [2]

http://www.delphikingdom.com/asp/viewitem.asp?catalogid=374
читать до полного...


vegarulez   (2006-10-19 09:14:00) [3]

Ну в мускле тогда зайти и настроить float до какого символа записывать флоат в ту колонку, из которой он берёт значение...


Ketmar   (2006-10-19 09:11:00) [4]

>[14] vegarulez(c) 19-Oct-2006, 09:09
двойка. внимательно читай [2]. "как получить именно то число которое в СУБД ?" твой код даёт вовсе не это.


vegarulez   (2006-10-19 09:09:00) [5]

procedure TForm1.Button1Click(Sender: TObject);
var
i:extended;
begin
i:=strtofloat(Edit1.Text);
label1.Caption:=formatfloat('0.00',i);
end;

end.


vegarulez   (2006-10-19 09:07:00) [6]

procedure TForm1.Button1Click(Sender: TObject);
var
i:extended;
begin
i:=strtofloat(Edit1.Text);
label1.Caption:=formatfloat('0.00',i);
end;


Ketmar   (2006-10-19 09:05:00) [7]

>[11] Anatoly Podgoretsky(c) 19-Oct-2006, 09:00
>Как раз наоборот, если число с фиксированым числом знаков
>после запятой, то до здраствуют точные числа.
я отвечал в контексте ветки. если здесь округлять/обрезать -- то точное значение тю-тю.


Anatoly Podgoretsky   (2006-10-19 09:00:00) [8]


> и прощайте, точные значения. %-)

Как раз наоборот, если число с фиксированым числом знаков после запятой, то до здраствуют точные числа.


Anatoly Podgoretsky   (2006-10-19 08:59:00) [9]


> А Вот откуда в делфи берётся мусор после запятой и главно
> как получить именно то число которое в СУБД

Ты его получил, если получишь, что то другое, значит по дороге где то затесался диверсант.


Anatoly Podgoretsky   (2006-10-19 08:58:00) [10]

> У флоата, когда в делфе к базе обращаешся поставь порог точности.
то бишь разрядности после зпт. и всё.

Попробуй перевести слово флоат, что бы понять абсурдность данного предложения.


Anatoly Podgoretsky   (2006-10-19 08:56:00) [11]


> нет, 0,31  - это правильное число, я сам вводил его в таблицу

Это исключено, база не в состоянии хранить подобное число и это не обойти, фундаментальные законы дискретной математики.


morda   (2006-10-19 06:32:00) [12]

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


Ketmar   (2006-10-19 06:22:00) [13]

>[5] vegarulez(c) 19-Oct-2006, 06:21
>и всё.
и прощайте, точные значения. %-)


vegarulez   (2006-10-19 06:21:00) [14]

У флоата, когда в делфе к базе обращаешся поставь порог точности.
то бишь разрядности после зпт. и всё.


Ketmar   (2006-10-19 06:16:00) [15]

зыж чую, что сейчас меня обзовут ламером и будут с пеной у рта пояснять, что в базе точно 0.31 лежит.


Ketmar   (2006-10-19 06:15:00) [16]

повторю для водителей бронепоезда: если какой-то софт округляет числа -- то это интимные баги этого софта. Delphi за тебя округлять не будет.

а что ты там воодил -- это дело десятое. почитай о представлении дробных чисел в компе. сразу всё прояснится.


morda   (2006-10-19 06:11:00) [17]

нет, 0,31  - это правильное число, я сам вводил его в таблицу, и mysql отображает ИМЕННО его по такому же запросу как и в делфи. А Вот откуда в делфи берётся мусор после запятой и главно как получить именно то число которое в СУБД ?


Ketmar   (2006-10-19 05:50:00) [18]

а это и есть правильноечисло. "правильней" некуда. а то, что какой-то софт его тебе округляет при выводе -- так это глюки софта.


Наверх

Титульная страница Поиск, карта сайта Написать письмо