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 बताता है कि आप प्रमुख रिक्त स्थान के साथ कोई पैडिंग नहीं चाहते हैं।