Wpis z mikrobloga

@Szumrzeczny: Zakładam że znak plus działa na zasadzie promowania do konkatenacji i zmienna int konwertowana jest na string. Natomiast znak minus promuje konwersję string na int i mam wynik odejmowania dwóch liczb. Wydaje się to sensowne, nie mniej w cywilizowanym języku drugi przypadek nie powinien mieć miejsca i nie powinno być niejawnej konwersji że string do int.
Wydaje się to sensowne, nie mniej w cywilizowanym języku drugi przypadek nie powinien mieć miejsca i nie powinno być niejawnej konwersji że string do int.


@AtlantyQ: ani pierwszy ani drugi przypadek nie jest sensowny. W dobrze zaprojektowanym języku obydwa powinny być błędami.
@Szumrzeczny: tylko że normalne języki mają liczby całkowite, a JS robi wszystko na floatach. W większości programów, poza kilkoma specyficznymi niszami jak gry czy aplikacje inżynierskie, nie używa się floatów, więc ich problemy z precyzją nie są problemem w świecie poza JS.
@Krolik:

więc ich problemy z precyzją nie są problemem w świecie poza JS


Są, były i zawsze będą
Jest to efekt uboczny konwersji z innego systemu liczbowego (w tym przypadku binarnego) na dziesiętny, można go na różne sposoby omijać, maskować, ale ten problem siłą rzeczy zawsze będzie występował
@Szumrzeczny: chyba nie zrozumiałeś co napisałem. W normalnych językach programowania masz liczby całkowite, które nie mają problemów z precyzją. W JS jesteś skazany na liczby zmiennoprzecinkowe. Liczby zmiennoprzecinkowe używane są normalnie może w 1% kodu i zwykle ludzie którzy ich używają wiedzą jak się nimi posługiwać, i problem zaokrągleń jest im znany i są techniki pozwalające go ograniczyć.

I nie, gdyby te liczby były zapisywane systemem dziesiętnym to problem niedokładmości też
@Krolik: Wiem o co ci chodzi, czytałem kiedyś o tych popier*oleństwach JSa xD
Po prostu przykład kolegi @zwei jest zbyt hmm ogólny, uniwersalny

I nie, gdyby te liczby były zapisywane systemem dziesiętnym to problem niedokładmości też by występował tylko po prostu dla innych liczb np. 1/3


Przyznaję się do błędu, zapomniałem o nieskończonych (lub bardzo dużych, tzn. przekraczających możliwości danej maszyny/ustalonej precyzji) rozwinięciach, ale clou mojego wywodu pozostaje takie samo -