2011-11-11 10 views
16

Mam kilka elementów, które chcę podzielić na kilka kubełków, tak, że każde wiadro jest ułamek większy niż ostatni.Jak dostać się do haskell na numery wyjściowe NIE w notacji naukowej?

items = 500 
chunks = 5 
increment = 0.20 


{- find the proportions -} 
sizes = take chunks (iterate (+increment) 1)  
base = sum sizes/items  
buckets = map (base *) sizes 

main = print buckets 

Jestem pewien, że jest matematycznie bardziej elegancki sposób to zrobić, ale to nie moja sprawa. Koniec jest zawsze drukowany w notacji naukowej.

Jak uzyskać zwykły wynik dziesiętny? Przyjrzałem się pakietowi Numeric, ale nie dostaję się nigdzie szybko.

+1

pokrewne dla innych języków: [Haskell] (http://stackoverflow.com/questions/8098457/how-do-i-get-to-haskell-to-output-numbers- not-in-scientific-notation) [Lua] (http://stackoverflow.com/questions/1133639/how-can-i-print-a-huge-number-in-lua-without-using-scientific-notation) [C++ ostreams] (http://stackoverflow.com/questions/2335657/prevent-scientific-notation-in-ostream-when-using-with-double) [Delphi] (http://stackoverflow.com/questions/6077153/how-to-disable-scientific-notation-instrassing-in-delphi) –

Odpowiedz

9

Wypróbuj printf. np:

> import Text.Printf 
> printf "%d\n" (23::Int) 
23 
> printf "%s %s\n" "Hello" "World" 
Hello World 
> printf "%.2f\n" pi 
3.14 
12
> putStrLn $ Numeric.showFFloat Nothing 1e40 "" 
10000000000000000000000000000000000000000.0 
Powiązane problemy