ďťż
 
[MSSQL2000]-ciekawy problem z dzieleniem liczb decimal(38,25) ďťż
 
[MSSQL2000]-ciekawy problem z dzieleniem liczb decimal(38,25)
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

[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.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    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.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • own-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

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com