Pergunta

Suponha que eu tenho uma variável do tipo Int = 08, como posso converter isso para String mantendo o zero?

Por exemplo:

v :: Int
v = 08

show v

Saída: 8

Eu quero que a saída seja "08".

Isso é possível?

Foi útil?

Solução

Dependendo do que você está planejando fazer você pode querer armazenar o "08" como uma cadeia e só converter para int quando você precisar o valor.

Outras dicas

Use Text.Printf.printf:

printf "%02d" v

Certifique-se de Text.Printf.printf importação em primeiro lugar.

Seu 8, não 08 na variável v . Sim, você atribuiu 08 mas recebe 8. Isso é a razão pela Mostrar método exibido-lo como 8. Você pode usar o trabalho em torno dada pelo Mipadi .

Editar:

Saída de um teste.

Prelude> Text.Printf.printf "%01d\n" 08
8
Prelude> Text.Printf.printf "%02d\n" 08
08
Prelude> Text.Printf.printf "%03d\n" 08
008

Saída de outro teste.

Prelude> show 08
"8"
Prelude> show 008
"8"
Prelude> show 0008
"8"

Eu espero que você começa o ponto.

Editar:

Encontrado outra solução. Tente isso,

"0" ++ show v

A forma printf é provavelmente o melhor, mas é fácil o suficiente para escrever sua própria função:

show2d :: Int -> String 
show2d n | length (show n) == 1 = "0" ++ (show n)
         | otherwise = show n

funciona da seguinte maneira:

Prelude> show2d 1
"01"
Prelude> show2d 10
"10"
Prelude> show2d 100
"100"
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top