Autor Zpráva
čert12
Profil *
mám pole kde jsou jednak čísla a i stringy, a když se pokouším volat mojepole[2].toFixed(2); tak mi to vrací chybu, proč? když v tom poli je uloženo číslo?
_es
Profil
Z uvedených informácií asi príčinu chyby nikto nevyveští.
Možno v mojepole[2] nie je číslo, možno v mojepole nie je pole...
čert12
Profil *
po kliknutí připočítávám do toho pole číslo o .15 větší nebo menší (podle toho na co kliknu), ale když tam mám 2 - .15 tak výsledkem je 1.8499999 a když tam dám
poleCrSettings[0] = poleCrSettings[0].toFixed(2);
tak mi to po čase nefunguje a konzole mi vypíše
TypeError: poleCrSettings[0].toFixed is not a function[Zjistit více]



ještě předtim to byl řetězec ale ten jsem uspěšně zkonvertoval na číslo Number(poleCrSettings[0]), podle konzoli tam je číslo.


podle console.log
čert12
Profil *
Tohle funguje OK
$('#cr-zvp').on('click', function() {
    if (poleCrSettings[0] < 3.6) {
        poleCrSettings[0] += 0.15;
        $streva.css("font-size", poleCrSettings[0] + "rem");
    } else {
        return;
    }
});
a tohle už nefunguje, resp, funguje to jenom na pár kliknutí a potom se vypíše ta chyba... další naštěpávač naopak odečítá .15 (jinak kód je stejný):
$('#cr-zvp').on('click', function() {
    if (poleCrSettings[0] < 3.6) {
        poleCrSettings[0] += 0.15;
        poleCrSettings[0] = poleCrSettings[0].toFixed(2);
        $streva.css("font-size", poleCrSettings[0] + "rem");
    } else {
        return;
    }
});

Nevíte co je na tom špatně?
juriad
Profil
var a = 1;
a += 0.15;
a = a.toFixed(2);
a += 0.15;
alert(a); // vypíše "1.150.15", zamysli se proč
a.toFixed(2) // selže

V tom poli uchovávej vždy jen čísla, převody na řetězec a formátování řeš mimo:
$('#cr-zvp').on('click', function() {
    if (poleCrSettings[0] < 3.6) {
        poleCrSettings[0] += 0.15;
        $streva.css("font-size", poleCrSettings[0].toFixed(2) + "rem");
    } else {
        return;
    }
});
čert12
Profil *
juriad:
jo jasně protože to bere jako řetězec, ale jak je možný že to bere jako řetězec když je to tam uložené jako číslo? A co když budu chtít aby to bylo jen na dvě desetiná místa v tom poleCrSettings[0]? aha... ted sem to zkoušel v konzoli a to toFixed to převádí na řetězec. Ok, tak jo... díky


už je mi to jasný kde je problém... ale je to teda zlá funkce když to číslo ořízne a převede na řetězec....
_es
Profil
čert12:
jo jasně protože to bere jako řetězec, ale jak je možný že to bere jako řetězec když je to tam uložené jako číslo?
No lebo tam číslo uložené nie je. Metóda toFixed vracia textový reťazec a tým prepíšeš pôvodne uložené číslo.


čert12:
ale když tam mám 2 - .15 tak výsledkem je 1.8499999
Časté potíže, zajímavosti a poučné debaty » Výsledkem výpočtu 1 - 0.9 není přesně 0.1
čert12
Profil *
_es:
No lebo tam číslo uložené nie je.
jo jasně... ale původně bylo... už je mi to jasný

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0