假設我有一個int類型= 08的變量,我怎麼可以將它轉換爲字符串保持前導零?轉換哈斯克爾詮釋與領先的零字符串
例如:
v :: Int
v = 08
show v
輸出:8
我想要的輸出爲 「08」。
這可能嗎?
假設我有一個int類型= 08的變量,我怎麼可以將它轉換爲字符串保持前導零?轉換哈斯克爾詮釋與領先的零字符串
例如:
v :: Int
v = 08
show v
輸出:8
我想要的輸出爲 「08」。
這可能嗎?
取決於你正在計劃做你可能要存儲「08」爲一個字符串,只轉換爲int,當你需要的價值。
使用Text.Printf.printf
:
printf "%02d" v
確保導入Text.Printf.printf
第一。
它只是`進口Text.Printf` – cevaris 2014-09-17 06:26:24
它的8個,08不變量v。是的,您分配它08,但卻接收8.這就是原因顯示方法顯示它作爲8.您可以使用the work around given by Mipadi。
編輯:測試的
輸出。
Prelude> Text.Printf.printf "%01d\n" 08
8
Prelude> Text.Printf.printf "%02d\n" 08
08
Prelude> Text.Printf.printf "%03d\n" 08
008
另一個測試的輸出。
Prelude> show 08
"8"
Prelude> show 008
"8"
Prelude> show 0008
"8"
我希望你明白這一點。
編輯:
發現了另一種解決方法。試試這個,
"0" ++ show v
的printf
的方法可能是最好的,但它是很容易寫自己的功能:
show2d :: Int -> String
show2d n | length (show n) == 1 = "0" ++ (show n)
| otherwise = show n
的工作原理如下:
Prelude> show2d 1
"01"
Prelude> show2d 10
"10"
Prelude> show2d 100
"100"
行動,輸出實際上是 「8」,而不是8 – 2008-12-18 05:24:32
嗯,說v = 08和v = 8或v = 008或v = 0000008一樣。沒有辦法找回你已經定義了多少個0的信息。您只能打印一定數量的0,如下面的答案。 – ShreevatsaR 2008-12-18 05:54:57