2009-10-13 9 views
27

के लिए तैरता:हास्केल: सेना निम्नलिखित कोड का टुकड़ा का उपयोग करते हुए दो दशमलव

(fromIntegral 100)/10.00 

हास्केल '98 मानक प्रस्तावना का उपयोग करना, कैसे मैं दो दशमलव के साथ परिणाम का प्रतिनिधित्व करते हैं?

धन्यवाद।

+0

यह एक स्ट्रिंग के रूप में प्रतिनिधित्व किया जा चाहिए था तुम बस स्पष्ट प्रकार निर्दिष्ट कर सकते हैं। अर्थात। 10.00। – Anders

उत्तर

51
बस रिकार्ड के लिए

:

import Numeric 
formatFloatN floatNum numOfDecimals = showFFloat (Just numOfDecimals) floatNum "" 
+9

आईएमओ यह उत्तर स्वीकार किया जाना चाहिए। –

+0

@NikitaVolkov हो गया। देर आए दुरुस्त आए ;-) – Anders

22

आप Text.Printf से printf :: PrintfType r => String -> r उपयोग कर सकते हैं:

Prelude> import Text.Printf 
Prelude Text.Printf> printf "%.2f\n" (100 :: Float) 
100.00 
Prelude Text.Printf> printf "%.2f\n" $ fromIntegral 100/10.00 
10.00 

%f एक चल बिन्दु संख्या के रूप में दूसरा तर्क स्वरूपों। %.2f इंगित करता है कि दशमलव बिंदु के पीछे केवल दो अंक मुद्रित किए जाने चाहिए। \n एक नई लाइन का प्रतिनिधित्व करता है। यह इस उदाहरण के लिए कड़ाई से जरूरी नहीं है।

ध्यान दें कि यह फ़ंक्शन संदर्भ के आधार पर String या IO a का मान देता है। प्रदर्शन:

Prelude Text.Printf> printf "%.2f" (1337 :: Float) ++ " is a number" 
"1337.00 is a number" 

इस मामले printf स्ट्रिंग "1337.00" देता है, क्योंकि परिणाम (++) लिए एक तर्क, एक समारोह को उम्मीद है कि सूची तर्क (ध्यान दें कि String[Char] के समान है) है जो के रूप में पारित कर दिया जाता है। इस प्रकार, printf अन्य भाषाओं में sprintf के रूप में भी व्यवहार करता है। बेशक एक चाल जो दूसरी स्ट्रिंग को जोड़ना आवश्यक नहीं है।

Prelude Text.Printf> printf "%.2f\n" (1337 :: Float) :: IO a 
1337.00 
Prelude Text.Printf> printf "%.2f\n" (1337 :: Float) :: String 
"1337.00\n" 
+2

मैं प्रश्न दोबारा दोहरा दूंगा :-) मैं वास्तव में दो दशमलव के साथ एक फ्लोट का स्ट्रिंग प्रस्तुति वापस करना चाहता हूं - इसे stdout पर प्रिंट न करें। मुझे हास्केल में 'स्प्रिंटफ' फ़ंक्शन पर कुछ भी ठोस नहीं मिल रहा है जैसा कि मैंने आशा की थी। कोई संकेत? – Anders

+0

अच्छा बिंदु। मैंने अपना जवाब अपडेट किया। – Stephan202

+0

फिर फ्लोट प्रिंटिंग करने की कोशिश करें? –

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