Was ist der beste Weg, um Dezimalzahlen (Basis zehn) in sexagesimal (Basis sechzig) als eine Zeichenfolge mit 0-9, A-Z und a-x als Ziffern dargestellt zu konvertieren.Konvertieren von Dezimalzahlen in sexagesimal (Basis sechzig) in JavaScript
Ich plane, es in Javascript zu kodieren, aber jede Hilfe wird geschätzt.
Verwendungsbeispiel:
>>decToSex(60);
"10"
>>decToSex(123);
"23"
>>decToSex(1000000);
"4bke"
>>decToSex(1234567.89);
"5gu7.rO"
Der endgültige Code I, bezogen auf Paolo Antwort:
var decToSex = function(){
var decToSexMap = ['0','1','2','3','4','5','6','7','8','9',
'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z',
'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x'];
return function(number){
var negative = '';
if (number < 0){
var negative = '-';
}
number = number.toString().split('.');
var integer = Math.abs(number[0]);
var fraction = number[1];
var result = '';
do {
result = decToSexMap[integer % 60] + result;
integer = parseInt(integer/60);
} while (integer > 0);
if (fraction){
var decimalPlaces = fraction.toString().length;
result += '.';
fraction = parseFloat('.' + fraction);
var x = 0;
do {
x++;
var res = (fraction * 60).toString().split('.');
result = result + decToSexMap[res[0]];
if (res[1]) {
fraction = parseFloat('.' + res[1]);
}
else {
break;
}
} while (x < decimalPlaces);
}
return negative + result;
}
}();
Nizza Funktionsnamen, aber leider Sex - bedeutet 6, nicht 60 :-( – derobert
oh, dann muss ich mir eine Alternative überlegen. Vielleicht Sexage, wie der Sexage-nary-Zyklus es benutzt? – Annan
Mein Kopf tut weh von all dem Mathe, aber ich denke meine Antwort macht den Trick –