HSG |
|
1.234.567.890 · 7.835.007.219 = ?
Berechne im 100 000er-System 479.001.600 · 5.079.110.400 ganz exakt. Das Ergebnis ist übrigens 20! .
Type TCompare = (Lt, St, Eq, Er); TSign = (negative, positive); TFGInt = Record Sign : TSign; Number : Array Of LongWord; End; .... // Compare 2 FGInts in absolute value, returns // Lt if FGInt1 > FGInt2, St if FGInt1 < FGInt2, Eq if FGInt1 = FGInt2, // Er otherwise Function FGIntCompareAbs(Const FGInt1, FGInt2 : TFGInt) : TCompare; .... // Convert a base 10 string to a FGInt Procedure Base10StringToFGInt(Base10 : String; Var FGInt : TFGInt); .... // Convert a FGInt to a base 10 string Procedure FGIntToBase10String(Const FGInt : TFGInt; Var Base10 : String); .... // Add 2 FGInts, FGInt1 + FGInt2 = Sum Procedure FGIntAdd(Const FGInt1, FGInt2 : TFGInt; Var Sum : TFGInt);
Delphi-Hilfe: Longword, 0..4 294 967 295, 32 Bit, ohne Vorzeichen
GInt speichert in Number[0] die Anzahl der 'Ziffern'. Jede 'Ziffer' hat nach der String-zu-TFGInt-Umwandlung zunächst 4 Dezimalstellen. Damit ist sichergestellt, dass das 'kleine Computer-Einmaleins' reicht, um zwei 'Ziffern' miteinander zu multiplizieren. Für 5-stellige 'Ziffern' reicht der Wertebereich leider nicht, denn 99999·99999 = 9 999 800 001 > 4 294 967 295. Hier kann ein 10-stelliger Taschenrechner mehr!