![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
выборка 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]а это и есть правильноечисло. "правильней" некуда. а то, что какой-то софт его тебе округляет при выводе -- так это глюки софта.