2009-10-20 13 views
63

जब मैं (/ 411 125) करता हूं, तो मुझे इसे दशमलव के संदर्भ में नहीं मिलता है। मैं उसको कैसे करू?जब मैं क्लोजर में संख्याओं को विभाजित करता हूं तो मुझे एक अंश मिलता है, मैं दशमलव कैसे प्राप्त करूं?

उत्तर

78
user> (float (/ 411 125)) 
3.288 
user> (double (/ 411 125)) 
3.288 
13

documented के रूप में, पूर्णांक विभाजन तर्कसंगत संख्या उत्पन्न करता है।

(/ 411.0 125) 
7

यदि आप लाभांश के लिए एक फ्लोट का उपयोग करते हैं, तो आपको एक दशमलव उत्तर मिलेगा।

(/ 22.0 7) -> 3.142857142857143 

वहाँ भी (unchecked-remainder x y) समारोह उपलब्ध है।

27
user=> (clojure-version) 
"1.4.0" 

user=> (doc quot) 
------------------------- 
clojure.core/quot 
([num div]) 
    quot[ient] of dividing numerator by denominator. 
nil 

user=> (quot 411 125) 
3 
+0

डॉक मेरे लिए काम नहीं करता। मेरे पास क्लोजर का एक ही संस्करण है। क्या मुझे कुछ आयात करने की ज़रूरत है? – justinhj

+0

क्षमा करें, मुझे यह कहना चाहिए था - यह एक आरईपीएल सत्र है [लीनिंगेन] द्वारा प्रबंधित (http://leiningen.org)। क्लोजर परियोजनाओं के लिए यह * परियोजना * (इसलिए निर्भरता) प्रबंधन उपकरण है। एक बार जब आप इसे प्राप्त कर लेंगे, तो आपको पछतावा नहीं होगा। –

+0

मैं लीनिंगेन का भी उपयोग कर रहा हूं – justinhj

1

(float 411/125) एक और संस्करण है, तो आप संख्या सीधे दिया जाता है, जिस स्थिति है अगर तुम सिर्फ एक कैलकुलेटर के रूप में आरईपीएल का उपयोग कर रहे है। दुर्भाग्यवश यह जोनाथन फेनबर्ग और ire_and_curses द्वारा समाधान से कुछ वर्ण लंबा है। ;)

4

भी इस काम करेगा:

(/ 22. 7) => 3.142857142857143 
+0

आपको कुछ कोड भी शामिल करना चाहिए कि आपका कोड क्यों काम करता है और मूल कोड में क्या गलत है। – vyegorov

+0

अन्य समाधानों के साथ कुछ भी गलत नहीं है, लेकिन - अन्य समाधानों की तरह - मैं युगल में सोचने का एक और तरीका प्रस्तुत कर रहा हूं। क्यों यह काम कर रहा है; मुझे यकीन नहीं है, लेकिन मुझे लगता है कि क्लोजर ने इसे जावा से विरासत में प्राप्त किया है जो दशमलव बिंदु के साथ किसी भी अंक को डबल के रूप में स्वीकार करता है भले ही यह शून्य दशमलव स्थिति के साथ स्वरूपित हो – Samir

संबंधित मुद्दे

 संबंधित मुद्दे