viceversa periodicos pasar números numeros numero fracciones fraccion escribe ejercicios decimales convertir convertidor como javascript jquery

javascript - periodicos - numeros decimales



¿Cómo obtener una fracción de un número flotante? (8)

Esto lo hará (hasta los 4 dígitos que desee, cambie el multiplicador (10000) a mayor o menor si desea un número mayor o menor):

Math.ceil(((f < 1.0) ? f : (f % Math.floor(f))) * 10000)

Tengo un número de punto flotante:

var f = 0.1457;

O:

var f = 4.7005

¿Cómo obtengo solo el resto de la fracción como entero?

Es decir, en el primer ejemplo que quiero obtener:

var remainder = 1457;

En el segundo ejemplo:

var remainder = 7005;


Esto también depende de lo que quiera hacer con el resto (como los comentaristas ya han preguntado). Por ejemplo, si el número base es 1.03, ¿desea que el resto devuelto sea 3 o 03? Quiero decir, lo quiere como un número o como una cadena (con el fin de mostrarlo al usuario). Un ejemplo sería la visualización del precio del artículo, donde no desea convertir 03 a 3 (por ejemplo, $ 1.03) donde desea sobrescribir 03.

A continuación, el problema es con precisión flotante. Considera esto:

var price = 1.03; var frac = (price - Math.floor(price))*100; // frac = 3.0000000000000027

Por lo tanto, puede "resolver" esto al dividir la representación de la cadena sin la multiplicación (y el relleno cero opcional) en tales casos. Al mismo tiempo, evita problemas de precisión flotante. También se demuestra en este jsfiddle .

Este post sobre precisión flotante podría ayudar tan bien como este .


Puede restar el piso del número, dándole solo la parte fraccionaria, y luego multiplicar por 10000, es decir:

var remainder = (f-Math.floor(f))*10000;


Si bien esto no es lo que querrá la mayoría de la gente, pero TS pidió fract como entero, aquí está:

function fract(n){ return Number(String(n).split(''.'')[1] || 0); } fract(1.23) // = 23 fract(123) // = 0 fract(0.0008) // = 8


Yo diría que, asumiendo que deseamos mostrar estos valores al usuario, tratar estos números como cadenas sería el mejor enfoque. Esto soluciona el problema de los valores fraccionarios, como 0.002.

Me topé con este problema cuando intentaba mostrar los precios con los centavos en superíndice.

let price = 23.43; // 23.43 let strPrice = price.toFixed(2) + ''''; // "23.43" let integer = strPrice.split(".")[0] // "23" let fractional = strPrice.split(".")[1] // "43"


parseInt(parseFloat(amount).toString().split(''.'')[1], 10)


function frac(f) { return f % 1; }

Espero que ayude ;-)


var strNumber = f.toString(); var remainder = strNumber.substr(strNumber.indexOf(''.'') + 1, 4); remainder = Number(reminder);