Zaokrąglenie - niepoprawny wynik

0

Witam.

Temat dość banalny ale nie wiem skąd się bierze takie działanie...

Mam zapytanie:

SELECT DOKID, TWID, cena [CENA], ilosc [ILOŚĆ], cena * ilosc [WARTOŚĆ],  round(cena * ilosc, 2) [WARTOŚĆ ZAOKR]
FROM pozycje 
WHERE dokid = 4120578 and twid = 40475

które zwraca wynik:
screenshot-20180628105056.png

Pytanie: dlaczego WARTOŚĆ ZAOKR ma wartość 5.42, jeżeli WARTOŚĆ = 5,425?

cena ma typ decimal(18, 2)

Pozdrawiam

0

Drugi parametr funkcji ROUND to precyzja zaokrąglania, skoro dałeś tam 2, to cała reszta jest zwyczajnie odrzucana.

1

To dlatego, że do ilości używasz typ float. Zmień na decimal i będzie śmigać.

@kmgr - sorry, że będę niemiły, ale bzdury piszesz.

0
Haskell napisał(a):

@kmgr - sorry, że będę niemiły, ale bzdury piszesz.

za msdn:

length
Is the precision to which numeric_expression is to be rounded.

0

Napisałeś, że round odrzuca resztę, co jest nieprawdą.

0
Haskell napisał(a):

Napisałeś, że round odrzuca resztę, co jest nieprawdą.

ewidentnie przeczytałeś tylko połowę tego co napisałem....

0
kmgr napisał(a):

Drugi parametr funkcji ROUND to precyzja zaokrąglania, skoro dałeś tam 2, to cała reszta jest zwyczajnie odrzucana.

Jak to odrzucana?

I dlaczego w takim razie wynikiem zapytania SELECT round(5.425, 2) jest 5.43?

Haskell napisał(a):

To dlatego, że do ilości używasz typ float. Zmień na decimal i będzie śmigać.

Dzięki, zaraz przetestuje.

1 użytkowników online, w tym zalogowanych: 0, gości: 1