sql >> Database teknologi >  >> RDS >> PostgreSQL

Sådan fungerer Round() i PostgreSQL

I PostgreSQL er round() funktion bruges til at afrunde et tal.

Funktionen kan fungere på en af ​​to måder, afhængig af hvordan du bruger den. Du kan få det til at runde tallet til det nærmeste heltal eller til et bestemt antal decimaler.

Dette bestemmes af antallet af argumenter, du sender til funktionen, når du kalder den.

Syntaks

round() funktionen kan bruges på en af ​​følgende måder:

round(dp or numeric)
round(v numeric, s int) 

Den første syntaks afrunder tallet til det nærmeste heltal. dp angiver double precision .

Den anden syntaks runder den af ​​til et bestemt antal decimaler. I dette tilfælde v er nummeret og s er antallet af decimaler.

Returtypen for denne funktion er den samme som inputtypen.

Eksempel på første syntaks

Her er et eksempel, der bruger den første syntaks.

SELECT round(13.50); 

Resultat:

14

I dette tilfælde er brøksekunderne 50, så tallet rundes op til nærmeste heltal.

Hvis brøksekunderne var mindre end 50, ville det være blevet rundet ned, og resultatet ville være 13.

Her er et eksempel på det.

SELECT round(13.49); 

Resultat:

13

Eksempel på anden syntaks

Her er et eksempel, der bruger den anden syntaks.

SELECT round(13.50, 1); 

Resultat:

13,5

I dette tilfælde blev intet rundet op, og nul blev simpelthen droppet. I sådanne tilfælde returnerer det det samme resultat, som vi ville have set, hvis vi havde brugt trunc() fungere.

Men hvis vi justerer brøksekunderne lidt, vil vi se, at resultatet er afrundet.

SELECT 
  round(13.45, 1) AS "13.45",
  round(13.44, 1) AS "13.44"; 

Resultat:

13.45 | 13.44-------+-------13.5 | 13.4

Det er dog vigtigt at bemærke, at resultatet er fuldstændig afhængigt af, hvor mange brøksekunder du angiver i det andet argument.

Her er det samme eksempel igen, men med to decimaler angivet.

SELECT 
  round(13.45, 2) AS "13.45",
  round(13.44, 2) AS "13.44"; 

Resultat:

13.45 | 13.44-------+-------13.45 | 13.44

I dette tilfælde var intet afrundet, fordi jeg specificerede det nøjagtige antal decimaler, som jeg angav.

Tilføjelse af brøkdele sekunder

Der er intet, der forhindrer dig i at angive flere brøksekunder, end der er i det oprindelige tal.

SELECT 
  round(13.45, 3) AS "13.45",
  round(13.44, 3) AS "13.44"; 

Resultat:

13.45 | 13.44--------+--------13.450 | 13.440

I dette tilfælde tilføjer den blot et nul til den højre del af brøksekunderne.

Her er et eksempel på angivelse af et antal decimaler, når det oprindelige tal ikke inkluderer nogen brøksekunder.

SELECT round(12, 3); 

Resultat:

12.000

Negative decimaler

Her er, hvad der sker, når det andet argument er en negativ værdi.

SELECT round(789, -2); 

Resultat:

800

Her er nogle flere.

SELECT 
  round(789, -2),
  round(789, -1),
  round(489, -2),
  round(489, -1),
  round(489, -3); 

Resultat:

runde | runde | runde | runde | rund-------+-------+-------+-------+--------800 | 790 | 500 | 490 | 0

Round() vs Trunc()

I nogle tilfælde er round() funktionen kan se ud til at virke på samme måde som trunc() . Men de er ret forskellige.

round() funktion runder tallet. Tallet afrundes til nærmeste heltal eller til det angivne antal decimaler (afhængigt af om du giver det et argument eller to argumenter).

trunc() funktion på den anden side afkorter simpelthen tallet mod nul eller til den angivne decimal. Der udføres ingen afrunding.

Her er et eksempel for at vise forskellen.

SELECT 
  round(1.49, 1),
  trunc(1.49, 1); 

Resultat:

runde | trunc-------+-------1,5 | 1.4
  1. MySQL - Valg af en kolonne, der ikke er i Grupper efter

  2. Få tabel og kolonne, der ejer en sekvens

  3. ORA-12557 TNS:protokoladapter kan ikke indlæses

  4. T-SQL få antal arbejdsdage mellem 2 datoer