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.