2011-11-11 26 views
16

Tôi có một số mục mà tôi muốn phân vùng vào một số nhóm, sao cho mỗi nhóm lớn hơn một phần so với nhóm trước.Làm thế nào để tôi nhận được số lượng đầu ra KHÔNG theo ký pháp khoa học?

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 

Tôi chắc chắn có cách toán học thanh lịch hơn để thực hiện việc này, nhưng đó không phải là câu hỏi của tôi. Bước cuối cùng luôn được in ra trong ký pháp khoa học.

Làm thế nào để có được đầu ra thập phân đơn giản? Tôi đã xem gói Numeric nhưng tôi không nhận được gì nhanh chóng.

+1

liên quan cho các ngôn ngữ khác: [Haskell] (http://stackoverflow.com/questions/8098457/how-do-i-get-to-haskell-to-output-numbers- not-in-science-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-science-notation-in-asstring-in-delphi) –

Trả lời

9

Hãy thử printf. ví dụ:

> 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 
Các vấn đề liên quan