2013-03-22 6 views
15

क्या हास्केल में स्पिंटफ समतुल्य है?स्ट्रिंग के लिए हास्केल प्रिंटफ

मुझे प्रारूप डबल स्ट्रिंग में स्ट्रिंग में कनवर्ट करने की आवश्यकता है, इसलिए, printf प्रकार के फ़ंक्शंस का उपयोग किए बिना कोई और तरीका है।

Prelude> putStrLn myDoubleVal 
1.7944444444444447e-2 

मैं बजाय

Prelude> putStrLn . sprintf "%.2f" $ myDoubleVal 
1.79 

उत्तर

39

हां, यह Text.Printf मॉड्यूल में है, और इसे केवल printf कहा जाता है।

> import Text.Printf 
> let x = 1.14907259 
> putStrLn . printf "%.2f" $ x 
1.15 

ध्यान दें कि printf की वापसी प्रकार ओवरलोड हो गया है, इतना है कि यह एक String लौटने (ऊपर के उदाहरण के रूप में) करने में सक्षम है, लेकिन यह भी एक आई/ओ कार्रवाई है कि मुद्रण करता है लौटने में सक्षम है, तो आप वास्तव में putStrLn करने के लिए कॉल की जरूरत नहीं है:

> printf "%.2f\n" x 
1.15 
+2

की जांच की गई, मैं इसे एक ही समारोह के साथ दोनों आईओ और स्ट्रिंग प्रिंट नहीं पता था। – Zhen

+2

टाइप सिस्टम जादू :) –

+3

@Zhen एक प्रकार का सुरक्षित संस्करण रुचि का हो सकता है: http://hpaste.org/79643 उदा। प्रारूप (str। "-" str। "/" int) "हैलो!" "विश्व!" 123 –

3

Text.Printf चाहते हो सकता है कि तुम क्या जरूरत है:

मुख्य समस्या से बचने के है।

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