MySQL में निकटतम पूर्णांक के लिए राउंड डाउन कैसे करें?


84

मैं MySQL में निकटतम पूर्णांक के लिए कैसे चक्कर लगाऊंगा?

उदाहरण: 12345.7344 rounds to 12345

mysql का round()फंक्शन राउंड अप होता है।

मुझे नहीं पता कि मूल्य और न ही दशमलव स्थान कब तक होंगे, 4 दशमलव स्थानों के साथ 10 अंक हो सकते हैं, 7 अंकों वाले स्थानों के साथ 2 अंक हो सकते हैं।


आप उदाहरण के लिए पूर्णांक के लिए गोल नहीं है!
पैट्रिक होनोरेज़

1
@PatrickHonorez आपकी टिप्पणी एक 5 साल पुराने प्रश्न पर है, और इस प्रश्न को गलत समझा है। ओपी निकटतम पूर्णांक के लिए DOWN को गोल करने के लिए एक फ़ंक्शन के लिए पूछ रहा है।
वॉरेन सीरजेंट

@WarrenSergent वास्तव में: - /
पैट्रिक होनोरेज़

जवाबों:


119

फर्श का उपयोग करें :

SELECT FLOOR(your_field) FROM your_table

धन्यवाद। जब मैं पूरे दौर () के बारे में पढ़ रहा था, तब वह मुझे घूर रहा था।
d -_- b

ठीक है, मैंने वह टिप्पणी हटा दी है, मैंने यह कोशिश की थी और यह 0 पर लौटा FLOOR()था जब 2 उप-वर्ग (उप-अंतर का अंतर था -70.00) था ... क्या पहले कभी देखा था?
स्टीफन

46

यदि आप अपने दशमलव को निम्न पूर्णांक पर गोल करना चाहते हैं, तो FLOOR () का उपयोग करें । उदाहरण:

FLOOR(1.9) => 1
FLOOR(1.1) => 1

यदि आप अपने दशमलव को निकटतम पूर्णांक पर गोल करना चाहते हैं, तो ROUND () का उपयोग करें । उदाहरण:

ROUND(1.9) => 2
ROUND(1.1) => 1

यदि आप अपने दशमलव को ऊपरी पूर्णांक पर गोल करना चाहते हैं, तो CEIL () का उपयोग करें । उदाहरण:

CEIL(1.9) => 2
CEIL(1.1) => 2


3

SUBSTRFLOORकुछ मामलों में बेहतर होगा क्योंकि FLOOR के पास "बग" है:

SELECT 25 * 9.54 + 0.5 -> 239.00

SELECT FLOOR(25 * 9.54 + 0.5) -> 238  (oops!)

SELECT SUBSTR((25*9.54+0.5),1,LOCATE('.',(25*9.54+0.5)) - 1) -> 239

2
मैंने अभी अभी MySQL 5.6.40 पर SELECT FLOOR (25 * 9.54 + 0.5) का परीक्षण किया है और यह 239 रिटर्न करता है।
विंटर

1

इसे निम्नलिखित दो तरीकों से किया जा सकता है:

  • select floor(desired_field_value) from table
  • select round(desired_field_value-0.5) from table

दूसरी तरह की व्याख्या: 12345.7344 पूर्णांक मान लें। तो, 12345.7344 - 0.5 = 12345.2344 और परिणाम से राउंडिंग 12345 होगी।



0

यदि आपको आवश्यकता हो तो डेसीमल का उपयोग कर सकते हैं

DECLARE @Num NUMERIC(18, 7) = 19.1471985
SELECT FLOOR(@Num * 10000) / 10000

आउटपुट: 19.147100 स्पष्ट: 985 जोड़ें: 00

या इसका उपयोग करें:

SELECT SUBSTRING(CONVERT(VARCHAR, @Num), 1, CHARINDEX('.', @Num) + 4)

आउटपुट: 19.1471 स्पष्ट: 985

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.