¿Cuál es la mejor manera de convertir números decimales (base diez) a sexagesimal (base sesenta) representados como una cadena usando 0-9, A-Z y a-x como dígitos.Conversión de decimales a sexagesimal (base sesenta) en javascript
Estoy planeando codificarlo en javascript pero se agradece cualquier ayuda.
uso Ejemplo:
>>decToSex(60);
"10"
>>decToSex(123);
"23"
>>decToSex(1000000);
"4bke"
>>decToSex(1234567.89);
"5gu7.rO"
El código final he utilizado, basado en la respuesta de Paolo:
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;
}
}();
nombres de las funciones son bonitas, pero por desgracia el sexo - significa 6, no 60 :-( – derobert
oh, entonces tendré que pensar en una alternativa. ¿Tal vez Sexage como el ciclo Sexage-nary lo usa? – Annan
Me duele la cabeza por todas las matemáticas, pero creo que mi respuesta es la clave . –