2010-11-09 15 views
5

Existe-t-il une fonction dans haskell qui convertit de int en float et de char en float?Haskell int pour flotter et char pour flotter

Je sais qu'il existe une fonction qui convertit de char en int et int en char.

+0

Voir aussi http://stackoverflow.com/questions/3968265/integer-to-float –

Répondre

7

Des questions comme celles-ci peuvent être résolues avec hoogle.

Par exemple, Hoogle pour « Char -> Int » et la première fonction figurent sur la liste faire (ord, mentionné dans d'autres réponses, est le deuxième résultat):

digitToInt :: Char -> Int 

Bien que votre besoin d'une fonction :: Char -> Float ne commande à l'aide read (troisième résultat vers le bas) ou une combinaison de digitToInt et une fonction :: Int -> Float:

digitToFloat = toEnum . digitToInt 
+0

Je savais qu'il y avait une fonction comme digitToInt, mais j'étais trop paresseux pour la rechercher. Merci! –

10

fromIntegral va convertir Int Float.

Pour Char to Float, cela dépend. Si vous souhaitez obtenir la valeur ASCII d'un Char (en ignorant Unicode pour l'instant), utilisez Data.Char.ord:

Prelude Data.Char> fromIntegral (ord '2') :: Float 
50.0 

Si vous voulez lire le chiffre d'un char, à savoir '2' devient la valeur 2, vous pouvez le faire:

char2float :: Char -> Float 
char2float n = fromInteger (read [n]) 

Prelude Data.Char> char2float '2' 
2.0 

Si vous allez faire beaucoup de cela, vous pouvez envisager d'utiliser une bibliothèque d'analyse réelle pour obtenir le traitement des erreurs réelles.

+2

Vous pouvez simplement faire 'char2float n = lecture [n] '. Pas besoin de 'fromInteger'. – sepp2k

0

Si je bien, vous pouvez utiliser Lire à ces fins classe de types. Et cela signifie que vous pouvez convertir certains types de base à d'autres types de base.

Conversion de Int à un flotteur:

Prelude> 1::Float 
1.0 

MAIS Je ne sais pas ce qui signifie la conversion de char à flotteur - peut-être [Char] à flotteur ou chaîne à flotteur? Quoi qu'il en soit:

Prelude> read("1")::Float 
1.0 

Vérifiez ce lien: http://book.realworldhaskell.org/read/using-typeclasses.html