javascript - Conversia unui șir mare de numere într-un număr


În ce mod pot să convertesc un șir cu 16 cifre și 2 valori fractionare într-un număr?

În prezent, când încerc să convertesc Number('1234567890123456.12') va deveni 1234567890123456. Valorile fracționare vor dispărea.

Vreau doar să confirm dacă fără a folosi vreo bibliotecă terță pot converti acest șir într-un număr?

Răspuns #1

Din păcate, nu. JavaScript își reprezintă numerele folosind numere în virgulă mobilă cu dublă precizie. La 16 cifre, va putea păstra doar componenta întreagă și nu partea după punctul zecimal. Vei avea nevoie de o bibliotecă bignum pentru a folosi această valoare.

EDIT: pentru referință, cel mai mare număr întreg pe care îl poți folosi în JavaScript este 9.007.199.254.740.991

EDIT2: Mulțumită lui Jeremy, poți folosi o bibliotecă precum bignumberJS.

Răspuns #2

Numărul tău are prea mulți algoritmi, am creat un exemplu care simulează în prima poziție a array-ului lungimea maximă posibilă în javascript.

var nums = [
    "12345678910111.12", 
    "1.5323",  
    "-42.7789"
];

nums.forEach(function(n) {
    console.log(parseFloat(n).toFixed(2));
});

https://jsfiddle.net/7zzz1qzt/