Ouch, my bad. length.show is better :)

2009/8/22 Derek Elkins <derek.a.elk...@gmail.com>:
> 2009/8/22 Eugene Kirpichov <ekirpic...@gmail.com>:
>> Use 'round' instead of 'truncate'.
>>
>> Prelude> let numDigits = (+1) . round . logBase 10 . fromIntegral
>> Prelude> map (numDigits . (10^)) [0..9]
>> [1,2,3,4,5,6,7,8,9,10]
>>
>
> round won't work because 999 is close to 1000.
>
> You simply need to use logBase 10 as a guess and then check the answer, e.g.
> numDigits n | n < n'       = e
>                  | otherwise = e + 1
>    where e = ceiling $ logBase 10 $ fromIntegral n
>             n' = 10^e
> This will need to special case 0 which it currently doesn't do.
>



-- 
Eugene Kirpichov
Web IR developer, market.yandex.ru
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to