क्या केवल एक कास्ट/कन्वर्ट के साथ दो पूर्णांकों को विभाजित करने और 3 दशमलव स्थानों तक गोल करने का कोई तरीका है?

सभी उदाहरण मैं convert से decimal तक देखता हूं, फिर round। कुछ ने अंश और हर, आदि दोनों डाले। मैंने round को floor या ceiling, आदि के साथ देखा है।

मैं सिर्फ एक कास्ट का उपयोग करना चाहता हूं और मेरा काम हो गया।

उदाहरण के लिए, 1/3 would be 0.3335/3 is 1.667

मैं उस परिणाम को varchar के रूप में डालने के लिए ऐसा कर रहा हूं।

0
fdkgfosfskjdlsjdlkfsf 27 अक्टूबर 2018, 01:32

1 उत्तर

सबसे बढ़िया उत्तर

दो int मानों को विभाजित करना t-sql के केवल दो संभावित परिणाम हैं:

  • त्रुटि 8134 (शून्य से भाग)
  • एक इंट वैल्यू फिर से

यह किसी एक ऑपरेंड को numeric के लिए बाध्य करने के लिए पर्याप्त होना चाहिए:

select round(1.0/3,3,0)

अनुगामी शून्य से बचने के लिए, दूसरा तरीका:

select cast(1.0/3 as decimal(18,3))

यह निश्चित रूप से केवल संख्यात्मक शाब्दिक के साथ काम करता है। यदि आपके पास कोई कॉलम या पैरामीटर मान है, तो cast अभी भी आवश्यक है।

कोड गोल्फ में यह कमजोर प्रयास एक और चरित्र को हटा देता है:

select convert(decimal(9,3),1.0/3)
1
Cee McSharpface 26 अक्टूबर 2018, 23:05