Wir hatten einige Herausforderungen bei der Basiskonvertierung, aber alle scheinen auf ganzzahlige Werte zuzutreffen. Lass es uns mit reellen Zahlen machen!
Die Herausforderung
Eingänge:
- Eine echte positive Zahl x , ausgedrückt in Basis 10. Diese Zahl kann als Gleitkomma mit doppelter Genauigkeit oder als Zeichenfolge verwendet werden. Um Genauigkeitsprobleme zu vermeiden, kann davon ausgegangen werden, dass die Anzahl größer als 10 –6 und kleiner als 10 15 ist .
- Eine Zielbasis b . Dies ist eine ganze Zahl von 2 bis 36.
- Eine Anzahl von Nachkommastellen n . Dies ist eine ganze Zahl von 1 bis 20.
Ausgabe: Die Darstellung von x in der Basis b mit n Nachkommastellen.
Bei der Berechnung des Ausgabeausdrucks sollten die Ziffern nach dem n- ten abgeschnitten (nicht gerundet) werden. Zum Beispiel x = 3.141592653589793
in base b = 3
is 10.0102110122...
, also für n = 3
die Ausgabe wäre 10.010
(Trunkierung), nicht 10.011
(Rundung).
Für x und b , die eine endliche Anzahl von Stellen im Bruchteil ergeben, ist auch die entsprechende unendliche Darstellung (auf n Stellen gekürzt) zulässig. Beispielsweise kann 4.5
dezimal auch dargestellt werden als 4.49999...
.
Sorgen Sie sich nicht um Gleitkommafehler .
Eingabe- und Ausgabeformat
x wird ohne führende Nullen angegeben. Wenn x zufällig eine Ganzzahl ist, können Sie davon ausgehen, dass sie mit einem Dezimalteil ( 3.0
) oder ohne Dezimalteil ( 3
) angegeben wird.
Die Ausgabe ist flexibel. Zum Beispiel kann es sein:
- Ein String, der die Zahl mit einem geeigneten Trennzeichen (Dezimalpunkt) zwischen ganzzahligen und gebrochenen Teilen darstellt. Ziffern
11
,12
usw. (für b über 10) als Buchstaben dargestellt werdenA
,B
wie üblich, oder wie andere eindeutige Zeichen (bitte angeben). - Eine Zeichenfolge für den ganzzahligen Teil und eine andere Zeichenfolge für den Bruchteil.
- Zwei Arrays / Listen, eine für jeden Teil, die Zahlen von
0
bis35
als Ziffern enthalten.
Die einzigen Einschränkungen bestehen darin, dass der ganzzahlige und der gebrochene Teil voneinander getrennt werden können (geeignetes Trennzeichen) und dasselbe Format verwenden (z. B. nein [5, 11]
für die Liste, die den ganzzahligen Teil darstellt, und ['5', 'B']
für die Liste, die den gebrochenen Teil darstellt).
Zusätzliche Regeln
- Programme oder Funktionen sind in jeder Programmiersprache zulässig . Standardlücken sind verboten.
- Kürzester Code in Bytes gewinnt.
Testfälle
Die Ausgabe wird als eine Zeichenfolge mit Ziffern dargestellt 0
, ..., 9
, A
, ..., Z
unter Verwendung .
als Dezimal - Trennzeichen .
x, b, n -> output(s)
4.5, 10, 5 -> 4.50000 or 4.49999
42, 13, 1 -> 33.0 or 32.C
3.141592653589793, 3, 8 -> 10.01021101
3.141592653589793, 5, 10 -> 3.0323221430
1.234, 16, 12 -> 1.3BE76C8B4395
10.5, 2, 8 -> 1010.10000000 or 1010.01111111
10.5, 3, 8 -> 101.11111111
6.5817645, 20, 10 -> 6.BCE2680000 or 6.BCE267JJJJ
0.367879441171442, 25, 10 -> 0.94N2MGH7G8
12944892982609, 29, 9 -> PPCGROCKS.000000000
42, 13, 1
wir haben 33
statt 33.0
?
n
Dezimalstellen haben muss