sql >> Databáze >  >> RDS >> Sqlserver

Jak je definováno měřítko, když se dělí desetinné a velké číslo?

Argument 1:3 AS DECIMAL(19, 8)

Argument 2:27 AS DECIMAL (18, 0) -- výchozí přesnost je 18, výchozí měřítko je 0 (BIGINT byl převeden na DECIMAL kvůli prioritě typu)

p1 = 19
p2 = 18
s1 = 8
s2 = 0

Počítejme například 1:

precision: (19 - 8 + 0) + MAX(6, 8 + 18 + 1) = 38
scale:     MAX(6, 8 + 18 + 1) = 27

Pro všechny vaše příklady dostanete vždy max. 27 měřítko.

 0.111111111111111111111111111 (27)
11.111111111111111111111111111 (27)
 0.005488934750153684025643277 (27)

Celá část zabírá pouze nezbytné číslice (1), (2), (1).

Pro mě je vše naprosto platné.

Tato odpověď je založena na práci @Paul White od Decimal Truncation In division .



  1. Spuštění Sonar runner (ubuntu) se nezdařilo:com.mysql.jdbc.Driver

  2. Jak najít podobné výsledky a seřadit je podle podobnosti?

  3. Co je to vypočítaný sloupec na serveru SQL?

  4. Získejte zpět stejný výsledek při pokusu o nalezení jiných dat