Ich möchte so etwas wie "0000" bis 0000.Convert Kette von Nullen Int (Halte Nullen)
konvertieren Wenn ich
read "0000" :: Int
Das Ergebnis verwenden ist
0
Viele Vielen Dank!
Ich möchte so etwas wie "0000" bis 0000.Convert Kette von Nullen Int (Halte Nullen)
konvertieren Wenn ich
read "0000" :: Int
Das Ergebnis verwenden ist
0
Viele Vielen Dank!
Es gibt keine 0000
vom Typ Int
, die sich von 0
unterscheidet, dies ist also nicht möglich. Dies ist nicht spezifisch für Haskell: Sie sehen dasselbe in jeder anderen Sprache mit numerischen Typen (d. H. Im Grunde jede Sprache überhaupt).
Aber wenn Sie sagen, „das Ergebnis 0
ist“, sollte man mehr sagen richtig, dass Ergebnis wird als gedruckt 0
, und in der Regel werden Sie Funktionen haben, die Sie erlauben, den gleichen Wert wie 0000
, zu drucken, aber wieder gewonnen‘ t zwischen 0
und 0000
ganzzahligen Werten unterscheiden.
Wenn Sie diese Informationen beibehalten möchten, benötigen Sie einen anderen Typ. Welcher, hängt davon ab, was genau du brauchst. Z.B. es könnte
data Digits = Digits [Int]
sein, wobei jedes Element der Liste von 0
zu 9
(oder [Int]
direkt verwenden). Oder
data IntWithPaddingZeros = IntWithPaddingZeros { value :: Int, paddingZeros :: Int }
Etc.
Sie müssen einen neuen Datentyp wie MyInt
definieren oder Mint
sagen und dem Compiler sagen, wie es angezeigt werden soll.
data Mint = M Int
instance Show Mint where
show (M n) = "000" ++ show n
*Main> M 7
0007
Dies ist natürlich ein sehr einfaches Beispiel. Sie könnten eine konzeptuellere Zeigefunktion entwickeln, die die Anzahl der hinzuzufügenden Nullen ableiten könnte, wenn die Ganzzahl mehr als 1 Ziffer ist.
OK wir unsere Darstellung Funktion entwickeln ein wenig weiter ...
data Mint = M Int
instance Show Mint where
show (M n) = replicate (3 - (round . (logBase 10) . fromIntegral) n) '0' ++ show n
*Main> M 133
0133
*Main> M 22
0022
*Main> M 0
0000
*Main> M 1453
1453
und was 0000 ist? – Redu
warum willst du das? –
@Redu 0000 ist ein Int –