El método de conversión de números arbitrarios js es el siguiente:
1. Método JavaScript toString ()
1. Definición y uso
Representación de cadena del número. Por ejemplo, cuando radix es 2, NumberObject se convertirá en una cadena representada por un valor binario.
2. Gramática
número .toString ( base )
3. Valor del parámetro
parámetro | descripción |
---|---|
base | Opcional. Especifica la base del número, que es un número entero entre 2 y 36. Si se omite este parámetro, se utiliza la base 10. Pero tenga en cuenta que si el parámetro es un valor distinto de 10, el estándar ECMAScript permite que la implementación devuelva cualquier valor.
|
4. Valor devuelto
Tipos de | descripción |
---|---|
Cuerda | Convertir número en cadena |
5. Ejemplo:
var count = 10;
console.log(count.toString()); // 输出 '10'
console.log((17).toString()); // 输出 '17'
console.log((17.2).toString()); // 输出 '17.2'
var x = 12;
console.log(x.toString(2)); // 输出 '1100' 10进制转2进制
console.log((254).toString(16)); // 输出 'fe' 10进制转16进制
console.log((10).toString(8)); // 输出 '12' 10进制转8进制
console.log((-0xff).toString(2)); // 输出 '-11111111' 16进制转2进制
Dos, función parseInt () de JavaScript
1. Definición y uso
La función parseInt () puede analizar una cadena y devolver un número entero.
Cuando el valor del parámetro radix es 0, o el parámetro no está establecido, parseInt () determinará la base del número según la cadena.
Cuando se omite el parámetro radix, la base del número predeterminado de JavaScript es la siguiente:
- Si la cadena comienza con "0x", parseInt () analizará el resto de la cadena en números enteros hexadecimales.
- Si la cadena comienza con 0, entonces ECMAScript v3 permite una implementación de parseInt () para analizar los siguientes caracteres como números octales o hexadecimales.
- Si la cadena comienza con un número del 1 al 9, parseInt () lo analizará como un entero decimal.
2. Gramática
parseInt (cadena, base)
parámetro | descripción |
---|---|
cuerda | Requerido. La cadena que se va a analizar. |
base | Opcional. Indica la base del número que se analizará. El valor está entre 2 ~ 36. |
3. Ejemplo:
//一个参数
parseInt("10"); // 10
parseInt("10.33"); // 10
parseInt("34 45 66"); // 34
parseInt(" 60 "); // 60
parseInt("40 years"); // 40
parseInt("He was 40"); // NaN
//两个参数
parseInt('123', 8) // 83 将'123'看作8进制数,返回十进制数83
parseInt("Hello", 8); // NaN 根本就不是数值
parseInt("546", 2); // NaN 除了“0、1”外,其它数字都不是有效二进制数字
parseInt("10",10); // 10
parseInt("10",8); // 8
parseInt("0x10"); // 16 将'0x10'看作16进制数,返回十进制数16
parseInt("10",16); // 16 将'10'看作16进制数,返回十进制数16
parseInt("010"); // 10 注意:旧浏览器由于使用旧版本的ECMAScript(ECMAScript版本小于ECMAScript 5,当字符串以"0"开头时默认使用八进制,ECMAScript 5使用的是十进制),所以在解析("010") 将输出8。
Tres, encapsular el método js String.format ()
var re = /%(?:(\d)?(\d)?(?:\.(\d+))?|\(([^)]+)\))([%bcdufosSxX])/g;
var dispatch = function (data) {
if (data.length == 1 && typeof data[0] == 'object') {
data = data[0];
return function (match, w, b, p, lbl, fmt, off, str) {
return formats[fmt](data[lbl]);
};
} else {
var idx = 0;
return function (match, w, b, p, lbl, fmt, off, str) {
return formats[fmt](data[idx++], p, w, b);
};
}
};
String.format = function () {
var as = [].slice.call(arguments), fmt = as.shift()
var s = "";
for (var i = 0; i < arguments.length; i++) {
s += arguments[i] + ",";
if (i == 0) {
fmt = arguments[0];
} else {
as[i - 1] = arguments[i];
}
}
return fmt.replace(re, dispatch(as));
}
var formats = {
'%': function (val) {
return '%';
},
'b': function (val) {
return parseInt(val, 10).toString(2);
},
'c': function (val) {
return String.fromCharCode(parseInt(val, 10));
},
'd': function (val) {
return parseInt(val, 10) ? parseInt(val, 10) : 0;
},
'u': function (val) {
return Math.abs(val);
},
'f': function (val, p) {
return (p > -1) ? Math.round(parseFloat(val) * Math.pow(10, p)) / Math.pow(10, p) : parseFloat(val);
},
'o': function (val) {
return parseInt(val, 10).toString(8);
},
's': function (val) {
return val;
},
'S': function (val, p) {
var len = p - val.toString().length;
for (i = 0; i < len; i++) val = '0' + val;
return val;
},
//'x': function(val) { return ('' + parseInt(val, 10).toString(16)).toLowerCase(); },
//'X': function(val) { return ('' + parseInt(val, 10).toString(16)).toUpperCase(); }
'x': function (val, p, a, b) {
var s = b ? new Array(b - 0 + 1).join(a || '') : '';
s += parseInt(val, 10).toString(16);
var ret = b ? s.slice(b * -1) : s;
return ret.toLowerCase();
},
'X': function (val, p, a, b) {
var s = b ? new Array(b - 0 + 1).join(a || '') : '';
s += parseInt(val, 10).toString(16);
var ret = b ? s.slice(b * -1) : s;
return ret.toUpperCase();
}
};
transferir:
String.format("%02X", 10); // "0A" 10进制转16进制
String.format("%d", 0x100); // "256" 16进制转10进制
String.format("%b", 100); // "1100100" 10进制转2进制
String.format("%o", 100); // "144" 10进制转8进制
...