|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
01.09.2009, 18:58 | #11 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,065
|
Книжки не пробовали читать? В них написано про погрешности вещественных чисел. Что нельзя тупо сравнивать их, а нужно при сравнении делать поправку на погрешность вещественного типа. При выводе на экран так же нужно делать поправку на необходимую точность. Не может в типе float храниться именно 12.3 по определению.
UDF - созданы не для костылей и округление - не есть костыль, а функция, которая напрямую не относится к СУБД и именно поэтому вынесена наружу. Покажите хоть одну СУБД, которая в вещественном поле будет хранить именно введенное 12.3, а не какое-нибудь 12.3000001907349. Если не умеете пользоваться вещественными числами, то не надо гнать про кривость рук людей, которые реализовывали их в ЭВМ. |
01.09.2009, 19:06 | #12 |
Участник клуба
Регистрация: 19.12.2007
Сообщений: 1,100
|
данную проблему я обходил с помощью замены Float на Numeric(7,2) а работал с ним как с Float
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ... |
01.09.2009, 19:09 | #13 | ||
SQL-коддинг
Участник клуба
Регистрация: 16.01.2009
Сообщений: 1,192
|
Цитата:
пользуюсь ораклом и не имею танцев с бубнами вокруг ненужных мне чисел в вещественном поле что я делаю не так? Цитата:
потому что когда просят сделать чтобы работало как надо, то они начинают рассказывать про то как кто-то когда-то что-то там изобрел/настроил/придумал и что оно именно так и должно работать вместо того чтобы сделать как просят речь как раз не про то что я не знаю как хранятся вещественные числа, а про то что есть тип данных, который декларирует возможность хранения чисел с определенной точностью, а на самом деле там бардак Последний раз редактировалось soleil@mmc; 01.09.2009 в 19:25. |
||
02.09.2009, 14:01 | #14 | |||
Старожил
Регистрация: 22.05.2007
Сообщений: 9,065
|
Тогда должны знать как устроен тип float и после запятой обычно точность идёт до 6-7 знаков. Берём пример автора и сравниваем числа:
12.3 и 12.3000001907349. Во втором числе убираем все неправильные числа, что в конце получились и имеем: 12.300000. Считаем и получаем точность в 6 знаков после запятой. Что не так? Введите 100 миллионов и увидите 100 миллионов. Введите 100 миллионов один и увидите опять 100 миллионов. Цитата:
Цитата:
Вот инфа по вещественным числам в Interbase http://ibase.ru/devinfo/round.htm (полезная инфа не только для данной СУБД, но и в целом, т.к. float там такой же как в делфях, С++,...). Я ничего криминального не вижу. Цитата:
Никто не почитывает, кстати, стандарт SQL? Какая там указана точность для типа FLOAT, если вообще указана? |
|||
02.09.2009, 14:21 | #15 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Да ладно, ребята, бросьте ссорится. Это не проблема, а мелочь, которую всегда можно округлить Она не стоит холливара.
I'm learning to live...
|
02.09.2009, 14:39 | #16 |
SQL-коддинг
Участник клуба
Регистрация: 16.01.2009
Сообщений: 1,192
|
2 pu4koff
смишно чесна слово база данных должна работать независимо от того чем к ней коннектишься отсюда вывод - введеное число с точностью до 2 знаков, например, я должен получить в запросе select * from table where id = :new.id независимо от того из-под какого гуи этот запрос сделан, а отсюда и следует, что в БД число должно храниться в том же виде что и введено например, в ИБ/ФБ (речь про их жизнь еще без диалектов, чтобы удобно было сравнивать с тем же в парадоксах и иже с ними) тип numeric(15, 2) хоть и декларирует 2 знака после запятой, но на самом деле в базе все это хранится в виде double precision со всеми вытекающими бубнами с округлением я могу понять, что нужно округлять числа после арифметических операций с ними - умножили/разделили - тогда добавятся лишние значащие, но зачем мне каждый раз беспокоиться об этом при просто хранении чисел?! Последний раз редактировалось soleil@mmc; 02.09.2009 в 14:43. |
06.09.2009, 00:23 | #17 | ||
Регистрация: 30.08.2009
Сообщений: 5
|
Цитата:
Цитата:
Еще вопрос, почему в DBGrid-е « 0,45 » отображается как « ,45 », а куда ноль делся, в базе он есть? Спасибо, Всем кто откликнулся, жаль, что большую часть обсуждения я не понимаю, ну, что поделать, будем учиться. Последний раз редактировалось Костя Мельников; 06.09.2009 в 00:33. |
||
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как узнать что число не Float(без остатка) при результате деления? | zotox | Помощь студентам | 7 | 19.07.2009 15:49 |
Не тот результат! | Dawystrik | Общие вопросы Delphi | 3 | 22.03.2009 09:50 |
Как сделать так, что б Float-элементы не уезжали друг под друга (если не влазят в экран) | barbiturat | HTML и CSS | 3 | 09.12.2008 10:26 |
Что за ошибка в опере IE7 отлично все отображает а соперы не могу... ((( | Droid | HTML и CSS | 0 | 29.10.2008 19:44 |