PostgreSQL round(double precision, integer)
को परिभाषित नहीं करता है . कारणों से @माइक शेरिल 'कैट रिकॉल' टिप्पणियों में बताते हैं, राउंड का संस्करण जो सटीकता लेता है वह केवल numeric
. के लिए उपलब्ध है ।
regress=> SELECT round( float8 '3.1415927', 2 );
ERROR: function round(double precision, integer) does not exist
regress=> \df *round*
List of functions
Schema | Name | Result data type | Argument data types | Type
------------+--------+------------------+---------------------+--------
pg_catalog | dround | double precision | double precision | normal
pg_catalog | round | double precision | double precision | normal
pg_catalog | round | numeric | numeric | normal
pg_catalog | round | numeric | numeric, integer | normal
(4 rows)
regress=> SELECT round( CAST(float8 '3.1415927' as numeric), 2);
round
-------
3.14
(1 row)
(उपरोक्त में, ध्यान दें कि float8
double precision
के लिए केवल एक शॉर्टहैंड उपनाम है . आप देख सकते हैं कि PostgreSQL आउटपुट में इसका विस्तार कर रहा है)।
numeric
. पर पूर्णांक बनाने के लिए आपको मान डालना होगा round
. के द्वि-तर्क प्रपत्र का उपयोग करने के लिए . बस ::numeric
संलग्न करें शॉर्टहैंड कास्ट के लिए, जैसे round(val::numeric,2)
।
यदि आप उपयोगकर्ता को प्रदर्शित करने के लिए स्वरूपण कर रहे हैं, तो round
. का उपयोग न करें . to_char
Use का उपयोग करें (देखें:मैनुअल में डेटा प्रकार स्वरूपण कार्य), जो आपको एक प्रारूप निर्दिष्ट करने देता है और आपको एक text
देता है परिणाम जो आपकी क्लाइंट भाषा numeric
. के साथ किसी भी तरह की विचित्रता से प्रभावित न हो मूल्य। उदाहरण के लिए:
regress=> SELECT to_char(float8 '3.1415927', 'FM999999999.00');
to_char
---------------
3.14
(1 row)
to_char
स्वरूपण के भाग के रूप में आपके लिए संख्याओं को गोल कर देगा। FM
उपसर्ग to_char
tells बताता है कि आप प्रमुख रिक्त स्थान के साथ कोई पैडिंग नहीं चाहते हैं।