(z hier: http://bluebones.net/2007/02/formatting-decimals-in-haskell/)
formatowania dziesiętnych Haskell
formatt funkcja z numerów takich jak 333999333.33 do "333,999,999.33" w Haskell. Radzi sobie z liczbami ujemnymi i rundami do 2 dp (łatwo można dodać do tego paramater).
Przykłady:
* Główna> formatDecimal 44
"44.00"
* Główna> formatDecimal 94.280.943,4324
"94,280,943.43"
* Główna> formatDecimal (-89.438,329)
"-89,438.33"
import Data.Graph.Inductive.Query.Monad (mapFst)
import List
import Text.Printf
formatDecimal d
| d < 0.0 = "-" ++ (formatPositiveDecimal (-d))
| otherwise = formatPositiveDecimal d
where formatPositiveDecimal = uncurry (++) . mapFst addCommas . span (/= '.') . printf "%0.2f"
addCommas = reverse . concat . intersperse "," . unfoldr splitIntoBlocksOfThree . reverse
splitIntoBlocksOfThree l = case splitAt 3 l of ([], _) -> Nothing; p-> Just p
++ Pytam o bibliotekę, a nie funkcję. –
Jest to prawdopodobnie powiązane: http: // stackoverflow.com/questions/1388209/how-to-format-numbers-according-to-locale-in-haskell (jak formatować liczby zgodnie z ustawieniami narodowymi) – sastanin
Jeśli biblioteka nie istnieje, powinieneś użyć tego jako świetnego pretekstu do napisania pierwszy pakiet Haskell Cabal. –