समाधान: ROUND() फ़ंक्शन
FLOAT/DECIMAL मान को निर्दिष्ट दशमलव स्थानों तक गोल करने के लिए ROUND() फ़ंक्शन का उपयोग करें।
सिंटैक्स
SELECT ROUND(yourColumnName, precision) FROM yourTableName;
व्यावहारिक उदाहरण
टेबल बनाना और डेटा डालना
mysql> CREATE TABLE givenPrecisionDemo (Amount FLOAT);
mysql> INSERT INTO givenPrecisionDemo(Amount) VALUES
-> (45.678), (123.456), (245.890), (980.678);
मूल डेटा
| Amount |
| 45.678 |
| 123.456 |
| 245.89 |
| 980.678 |
2 दशमलव स्थानों तक ROUND
mysql> SELECT ROUND(Amount, 2) FROM givenPrecisionDemo;
परिणाम
| ROUND(Amount, 2) |
| 45.68 |
| 123.46 |
| 245.89 |
| 980.68 |
ROUND व्यवहार
| मान | ROUND(x, 2) | नियम |
| 45.678 | 45.68 | तीसरा अंक 8 ≥ 5, ऊपर राउंड |
| 123.456 | 123.46 | तीसरा अंक 6 ≥ 5, ऊपर राउंड |
| 245.890 | 245.89 | तीसरा अंक 0 < 5, नीचे राउंड |
| 980.678 | 980.68 | तीसरा अंक 8 ≥ 5, ऊपर राउंड |
| 1.5 | 2 | .5 से दूर (बैंकर्स राउंडिंग नहीं) |
| -1.5 | -2 | शून्य से दूर |
संबंधित फ़ंक्शन
| फ़ंक्शन | उपयोग | उदाहरण |
| ROUND(x, d) | निकटतम, d दशमलव | ROUND(1.234, 2) = 1.23 |
| CEIL(x) | ऊपर छत | CEIL(1.1) = 2 |
| FLOOR(x) | नीचे फर्श | FLOOR(1.9) = 1 |
| TRUNCATE(x, d) | काटना (राउंड नहीं) | TRUNCATE(1.239, 2) = 1.23 |
| FORMAT(x, d) | स्ट्रिंग के रूप में फॉर्मेट | FORMAT(1234.56, 2) = '1,234.56' |
महत्वपूर्ण: FLOAT vs DECIMAL
FLOAT/DOUBLE अनुमानित हैं!
- द्विआधारी फ्लोटिंग पॉइंट प्रतिनिधित्व त्रुटियां
- ROUND(1.015, 2) = 1.01 हो सकता है (1.02 नहीं)
- सटीक दशमलव गणना के लिए DECIMAL उपयोग करें
- प्रदर्शन के लिए ROUND, भंडारण के लिए DECIMAL
प्रदर्शन फॉर्मेटिंग
-- 2 दशमलव के साथ स्ट्रिंग के रूप में
SELECT FORMAT(Amount, 2) FROM givenPrecisionDemo;
-- '45.68', '123.46', '245.89', '980.68'