2013-03-22 9 views
15

하스켈에는 sprintf가 있습니까?Haskell printf from String

Double 값을 String으로 변환해야하므로 printf 종류의 함수를 사용하지 않고 다른 방법이 사용됩니다.

Prelude> putStrLn myDoubleVal 
1.7944444444444447e-2 

난 당신이 필요로하는 무슨 수 있습니다 대신

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

답변

39

예, 모듈은 Text.Printf이며, 바로 printf입니다. 은 (위의 예에서와 같이) String를 반환 할 수 있어요하지만 그것은 또한 인쇄를 수행하는 I/O 작업을 반환 할 수있는, 그래서 있도록 printf의 반환 형식이 과부하되는 것을

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

참고 putStrLn에 대한 호출이 실제로 필요하지 않습니다.

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

체크 됨, 나는 동일한 기능으로 IO와 String을 모두 출력하는지 모릅니다. – Zhen

+2

시스템 마법 유형 : –

+3

@Zhen 유형 안전 버전이 유용 할 수 있습니다. http://hpaste.org/79643 예 : format (str. "-". str. "/". int) "Hello!" "세계!" 123 –