K.....u
  • Najlepsze
  • Wszystkie komentarze
K.....u
konto usunięte Autor
55
@folwarkzwierzecy: Tu jest wytłumaczenie: https://0.30000000000000004.com/. W skrócie, procesor pamięta liczbę "z kropką" w specyficznym formacie, który nie pozwala na dokładną reprezentację niektórych liczb
m.....y
m.....y
@Nixier: IEEE 754
Hauleth
@Nixier: Tak samo jak w każdym innym języku.
K.....u
@Passer93: Zapewne ta cywilizowaność jest okupiona znacznie dłuższym czasem wykonania
Nixier
@KorwinizacjaPrzelyku: js lubi to ( ͡° ͜ʖ ͡°)
Hauleth
@Nixier: Praktycznie każdy język jaki jest ma tak samo (z małymi wyjątkami).
Passer93
@msichal: W Perl6 liczby rzeczywiste są trzymane jak wymierne w postaci ułamka, int64 na licznik i mianownik.
0.3 to będzie licznik 3 i mianownik 10, nie ma tu miejsca nie niedokładności
Nixier
@Hauleth: to wiadomo, tylko w js zabawa z tym jest najbardziej upierdliwa
msichal
@WyslijNaPwUlubionegoMema: no i co wyniosłeś z tej dyskusji?
r333m4k444
@EmcePomidor: no właśnie nie, zarówno 0.2 + 0.1 == 0.3, jak i 0.2 + 0.1 === 0.3 zwrócą false, js ¯\_(ツ)_/¯
EmcePomidor
@r333m4k444: @Passer93: macie racje
Passer93
@msichal: eee, nie?
meetom
@KorwinizacjaPrzelyku: decimal > float ( ͡° ͜ʖ ͡°)
rukh
rukh
1
Kalkulatory przesuwają przecinki 0.1+0.2 na 1+2, i po obliczeniu przecinek ląduje z powrotem na swoje miejsce.
Tzn. domyślam się że niektóre programy są sprytniejsze
m.....s
m.....s
@mk321: w javowej BigDecimal też można sobie strzelić w stopę bo ma konstruktor m.in. przyjmujący typ double
Passer93
@KorwinizacjaPrzelyku: Meanwhile w cywilizowanych językach:

>perl6 -e "say 0.1 + 0.2 == 0.3"
True
Passer93
@KorwinizacjaPrzelyku: Każda abstrakcja ma swoją cene, po prostu liczby rzeczywiste są przechowywany w Perl6 jaka para dwóch 64 intów - licznik i mianownik.
folwarkzwierzecy
folwarkzwierzecy
@KorwinizacjaPrzelyku: Czemu tak się dzieje? :D
folwarkzwierzecy
folwarkzwierzecy
@KorwinizacjaPrzelyku: a to ciekawe, w sumie nigdy się nie zastanowiłem, że taki problem może występować :D Dzięki.