Jake jsou datove limity ciselnych datovych typu v JS a Dartu

Zde vam objasnim jake jsou limity datovych typu Number v JS a Double,Int v Dartu. Nebudu se zde zabyvat “cistym” JS ale tim, ktery zkompilujete z Dartu. Pokud mate cele cislo v JavaScriptu, je to velice jednoduche, spravne cislo hodnoty vam jednoduse rekne MDN, tedy pro kladne hodnoty to je  9007199254740991 a pro zaporne -9007199254740992. Napsal jsem si v Dartu tento kod:

A spustil v Dartiu, vysledek byl takovy:

MaxNumber in Javascript
Zde vidite, ze v Dartium a Dartu limit JavaScriptu nema zadny vyznam. Zel se mi nepodarilo vygooglit kolik je vlastne limit int’u Dartu v Dartium. Pak jsem program zkompiloval do JavaScriptu a spustil v Opere 26. Vysledek byl trochu jiny:
MaxNumber Plus in Javascript
Jak jiste vidite, na 3 radku je stejne cislo jako na prvnim, to znamena ze se cislo neinkrementovalo. Uz jsem ale nezkousel, zda by to tak fungovalo i cistem(nezkompilovanem) JS. To bysme meli datovy typ int a ted se podivame na Double.

Jednoduche pravidlo vse jisty, pro to aby jste meli jak v JS tak v Dartu stejne cislo je nutne dodrzovat Pravidlo max. 15ti devitek(ci jinych cislic), je jedno kde umistite desetinnou carku, stejne tak muzete pred/za desetinnou carku umistit jen nulu, pokud zbyvajici pocet cislic bude max. 15, Dart ani JS vam cislo nezprzni. Takze tyto vsechny cisla jsou OK:

  • 9.99999999999999
  • 99999999999999.9
  • 999999999999999.0 (zde vam JavaScript nevypise koncove “.0” ale cislo je jinak uplne stejne)
  • 0.999999999999999
  • 99999999.9999999

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.