2011-11-11 7 views
16

Tengo algunos elementos en los que quiero particionar en una cantidad de cubos, de modo que cada cubeta es una fracción más grande que la anterior.¿Cómo llego a Haskell a los números de salida NO en notación científica?

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 

Estoy seguro de que hay una manera matemáticamente más elegante de hacer esto, pero esa no es mi pregunta. El paso final siempre se imprime en notación científica.

¿Cómo obtengo la salida decimal simple? Miré el paquete Numeric pero no llegué rápido a ninguna parte.

+1

relacionado para otros idiomas: [Haskell] (http://stackoverflow.com/questions/8098457/how-do-i-get-to-haskell-to-output-numbers- notación no científica) [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-notación-en-asstring-in-delphi) –

Respuesta

9

Probar printf. por ejemplo:

> 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 
Cuestiones relacionadas