Re: Прикол с округлением

2006-08-24 Thread ArtGal

"Konstantin R. Beliaev" <[EMAIL PROTECTED]>
сообщил/сообщила в новостях следующее: news:[EMAIL PROTECTED]
>
> select cast((2674.615-300) as decimal(2,2)),
> cast(2674.615 as decimal(2,2)) from rdb$database
> получается 2374.61 и 2674.62
>
> Куда девалась копейка?
>
> FB 1.5.3, Win2003
>

Странно Ya 889 CS - все нормально.

-- 
Артур Галимов. ФК "ФармМедСервис" (Сочи).




Re: Прикол с округлением

2006-08-24 Thread Alexandr Kochmin

 A> Странно Ya 889 CS - все нормально.

диалекты уточните ;)


--
С уважением
Кочмин Александр




Re: Прикол с округлением

2006-08-24 Thread Ded


Konstantin R. Beliaev wrote:


select cast((2674.615-300) as decimal(2,2)),
   cast(2674.615 as decimal(2,2)) from rdb$database
получается 2374.61 и 2674.62

Куда девалась копейка?

FB 1.5.3, Win2003


   В диалект.

--
Regards. Ded.



Re: Прикол с округлением

2006-08-24 Thread ArtGal

"Alexandr Kochmin" <[EMAIL PROTECTED]>
сообщил/сообщила в новостях следующее: news:[EMAIL PROTECTED]
>
>  A> Странно >
> диалекты уточните ;)
>

W2K, Ya 889 CS, третий диалект - все нормально.

-- 
Артур Галимов. ФК "ФармМедСервис" (Сочи).




Re: Прикол с округлением

2006-08-24 Thread Alexandr Kochmin

 A> W2K, Ya 889 CS, третий диалект - все нормально.

вот вот. а в первом ненормально.


--
С уважением
Кочмин Александр




Re: Прикол с округлением

2006-08-24 Thread Konstantin R. Beliaev


Ded wrote:

   В диалект.

Диалект, действительно первый.
Значит в третьем будет минус 3 копейки? ;-)
А если серьезно: цифры-то почти одинаковые, и операции одинаковые. Я 
сначала думал на фин.округление, но что-то на него не похоже.
Т.е. понятно, что игра идет на последних разрядах float числа, но блин, 
это уж совсем ни в какие ворота не лезет :-(((




Re: Прикол с округлением

2006-08-24 Thread ArtGal

"Konstantin R. Beliaev" <[EMAIL PROTECTED]>
сообщил/сообщила в новостях следующее: news:[EMAIL PROTECTED]
>
> Т.е. понятно, что игра идет на последних разрядах float числа, но блин,
> это уж совсем ни в какие ворота не лезет :-(((
>

+- единица в шестом разряде для float - нормально.
Это для нас не нормально.
А почему бы не перейти на третий диалект?
Или есть какие-то подводные камни?

-- 
Артур Галимов. ФК "ФармМедСервис" (Сочи).




Re: Прикол с округлением

2006-08-24 Thread Vlad Horsun

"Konstantin R. Beliaev" ...
>
> select cast((2674.615-300) as decimal(2,2)),
> cast(2674.615 as decimal(2,2)) from rdb$database
> получается 2374.61 и 2674.62
>
> Куда девалась копейка?
>
> FB 1.5.3, Win2003

Как раз в 1.5.3 я с округлением уже боролся. Алгоритм примерно такой

static const double eps_double = 1e-14;
static const double eps_float  = 1e-5;

(long) d + 0.5 + eps, где

d - double (или float) и
eps = eps_double (или eps_float )

Вот этот eps я и ввёл в алгоритм, раньше его не было

В данном же примере d + eps_double меньше чем 237462, на
2.9103830456734 e-011

Увеличивать eps_double рискованно, т.к. идея была в том, чтобы
добавить 1 самый младший разряд в двоичном представлении double.
Оно, собственно, и так несколько завышенно т.к. точность double 15 цифр

--
Хорсун Влад




Re: Прикол с округлением

2006-08-25 Thread Konstantin R. Beliaev


Dmitri Kuzmenko wrote:

а при чем тут float ?

Ну хорошо, DOUBLE PRECISION.



Re: Прикол с округлением

2006-08-25 Thread Konstantin R. Beliaev


ArtGal wrote:

+- единица в шестом разряде для float - нормально.
Это для нас не нормально.
А почему бы не перейти на третий диалект?
Или есть какие-то подводные камни?

Ага, 50 баз разбросанных по разным городам, самая большая в 10Гб.



Re: Прикол с округлением

2006-08-25 Thread Konstantin R. Beliaev


Dmitri Kuzmenko wrote:

FB2 RC4 - 2674.62, 2674.62
FB 1.5.3 - 2674.62, 2674.62
IB 7.5.1 - 2674.62, 2674.62


Диалект первый возьми, в 3м вроде нормально.


А чем ты смотришь?

IBExpert



Re: Прикол с округлением

2006-08-25 Thread ArtGal

"Konstantin R. Beliaev" <[EMAIL PROTECTED]>
сообщил/сообщила в новостях следующее: news:[EMAIL PROTECTED]
>
> Ага, 50 баз разбросанных по разным городам, самая большая в 10Гб.
>

Да уж...
За год не разгребешь.
Нам легче.
30 баз в радиусе 70 км.

-- 
Артур Галимов. ФК "ФармМедСервис" (Сочи).