Gepostet: |
Int -> String mit vorangestellten Nullen | ||||||||||
Der Titel sagts ja schon. Ich möchte eine Integer in einen String umwandeln, beispielsweise: 007 -> "007" Wenn ich es mit show versuche, dann werden die Nullen abgeschnitten. Ein "00" ++ show 007 will ich nicht. Ich bin mir sicher es gibt eine elegante Lösung, nur hab ich weder in der Referenz was gefunden, noch in diesem bzw. anderen Foren. Danke im Voraus. |
|||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
Mh was denn gegen deine eigene Lösung einzuwenden? Wenn du abhängig davon wieviele Stellen die Zahl selbst bereits hat kannst du ne Funktion machen die dir einfach deine Zahl in einen String umwandelt und dann mit '0':String solange 0 anhängt bis du die gewünschte Länge hast. | |||||||||||
Zum Seitenanfang | ICQ | ||||||||||
Gepostet: |
|||||||||||
Das Prinzip von XeZZ ist auch die einzige Möglichkeit die ich sehe. Denn wenn du im Quellcode 007 schreibst, wird das ja intern in eine 7 umgewandelt, die Nullen davor werden verworfen. Und das show gibt die Zahl dann sozusagen in Normalform als String zurück. show (-(-(-7))) gibt bspw. auch nicht drei Minus-Zeichen zurück, sondern nur eins. Im Modul Text.Printf gibt es allerdings eine printf-Funktion, die dürfte das mit den führenden Nullen auch können. Viele Grüße, Siracusa |
|||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
Leider bringt mich Text.Printf nicht weiter. Das will mir einfach meine Nullen nicht gönnen. Sieht wohl so aus als ob ich die Nullen doch eigenhändig ranhängen muss. Obwohl ich ja immer noch verwirrt bin. In die andere Richtung, also String -> Integer, funkioniert es ja. printf "%s\n" "007" -> 007 putStrLn "007" -> 007 Danke Euch. Brewer |
|||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
Naja wenn du "007" ausgeben lässt wird es ja als String behandelt. Sobald dus aber als Integer speicherst werden auch hier die Nullen abgeschnitten. Du kommst also auf keinen Fall drum rum die selbst anzuhängen solange die Zahlen als Int gespeichert wurden. | |||||||||||
Zum Seitenanfang | ICQ | ||||||||||
Gepostet: |
|||||||||||
Also printf "%03d" 7 funktioniert und liefert 007, d.h. 0 für "mit Nullen auffüllen", 3 für insgesamt drei Stellen und d für eine Dezimalzahl. Und putStrLn wandelt dein Ergebnis nicht in ein Int um, das sieht nur im GHCi so aus! Du kannst den Ergebnistyp von einem Ausdruck testen, wenn du im GHCi vor den Ausdruck :t eingibst. Wenn du von String nach Int umwandeln will brauchst du read/reads o.ä. | |||||||||||
Zum Seitenanfang | |||||||||||