[MSSQL2000]-ciekawy problem z dzieleniem liczb decimal(38,25)
Jacek - 26-07-2007 00:02
[MSSQL2000]-ciekawy problem z dzieleniem liczb decimal(38,25)
Witam,
Przypadkiem natrafiłem na taki problem - próbując podzielić 2 liczby typu decimal(X,Y) - powiedzmy że jest to np. decimal(38,25) otrzymywałem błędy "Arithmetic overflow error converting expression to data type numeric". Jednocześnie argumenty użyte w operacji nie miały prawa przekroczyć w żaden sposób tego zakresu. Po bliższym przyjrzeniu się otrzymałem takie oto cudo: 1) select convert(numeric(38,24), 12345678.12345678) / convert(numeric(38,24), 12345678.12345678)
DZIAŁA, wynik = 1.000000
2) select convert(numeric(38,25), 12345678.12345678) / convert(numeric(38,25), 12345678.12345678)
NIE DZIAŁA - Arithmetic overflow error converting expression to data type numeric. (łatwo sprawdzić, że zarówno każdy z argumentów jak i wynik - "mieszczą się" w typie danych)
3) select convert(numeric(38,25), 12345678.12345678) * (1.0 / convert(numeric(38,25), 12345678.12345678))
ZNOWU DZIAŁA ;)
Znacie jakieś wytłumaczenie tego faktu?
pzdr Jacek
-- Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
AdamK - 28-07-2007 00:01
Witam, Użytkownik " Jacek" <jacekszajer@gazeta.SKASUJ-TO.pl> napisał w wiadomości news:f87j9b$al$1@inews.gazeta.pl... > Witam, > > Przypadkiem natrafiłem na taki problem - próbując podzielić 2 liczby typu > decimal(X,Y) - powiedzmy że jest to np. decimal(38,25) otrzymywałem błędy > "Arithmetic overflow error converting expression to data type numeric". > Jednocześnie argumenty użyte w operacji nie miały prawa przekroczyć w > żaden > sposób tego zakresu. > Po bliższym przyjrzeniu się otrzymałem takie oto cudo: > 1) > select convert(numeric(38,24), 12345678.12345678) / > convert(numeric(38,24), > 12345678.12345678) > > DZIAŁA, wynik = 1.000000 > > 2) > select convert(numeric(38,25), 12345678.12345678) / > convert(numeric(38,25), > 12345678.12345678) > > NIE DZIAŁA - Arithmetic overflow error converting expression to data type > numeric. > (łatwo sprawdzić, że zarówno każdy z argumentów jak i wynik - "mieszczą > się" w > typie danych)
Dodam od siebie, że na MS SQL 2005 to polecenie działa :) A na MS SQL 2000 faktycznie wywala powyższy błąd.
> 3) > select convert(numeric(38,25), 12345678.12345678) * (1.0 / > convert(numeric(38,25), 12345678.12345678)) > > ZNOWU DZIAŁA ;) > > Znacie jakieś wytłumaczenie tego faktu?
Osobiście uważam że to jakiś byk, popełniony przez MS, no bo jak inaczej wytłumaczyć fakt, że na SQL2k5 chodzi jak należy?
Pozdrawiam Adam
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
mysql i mysql-front, problem
String line; if (line=="cos"){...}....problem
Problemy z =?ISO-8859-2?Q?instalacj=B1_PostgreSQL_na_syste?==?ISO-8859-2?Q?mach_Windows?=
[postgres] Problem z =?ISO-8859-2?Q?zmian=B1_struktury_i_z?==?ISO-8859-2?Q?ale=BFno=B6ciami=2E?=
[oracle] =?ISO-8859-2?Q?zmia=BFd=BFony_przez_problem=3A_za?==?ISO-8859-2?Q?pytanie_do_hierarchi?=
Problem z wartościami w MySQL :( [ MySQL and ASP and VBScript ]
[PGSQL] czy ktos mial problemy z initdb pgsql 8.1 ?
[MySQL] Problem z zapisem danych w bazie danych
Problem z mysql - can't connect to MySQL/nietypowo...
plik corel 11 na corel 8 = problem z otwarciem
zanotowane.pldoc.pisz.plpdf.pisz.plown-team.pev.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|