1. Python / Говнокод #25645

    0

    1. 1
    2. 2
    In [9]: 0.14*100
    Out[9]: 14.000000000000002

    Питонобляди соснули!

    Запостил: syoma, 27 Мая 2019

    Комментарии (132) RSS

    • Какой баян )))
      Ответить
      • Боян бояном, но я увидев это на странице немало охуел
        Ответить
        • А как реализуется перевод числа в десятичную систему? Проёбывается в точности ведь наверняка больше?
          Ответить
          • Тоже интересно. Там где-то стоит неявный round?
            Ответить
        • На сгенерированной странице. В шаблоне число умножалось на 100
          Ответить
      • Языки меняются, школьники подрастают, плавающие питухи остаются.
        Ответить
        • Но яаааааа, я остаюсь!
          Тааааааам где мне хочется быть!
          И пуууууууусть я чуть-чуть округлюсь,
          Но я! Я! Я остаюсь!
          Я буду дроби хранить!
          Ответить
    • Именно поэтому я за «PHP»:
      https://ideone.com/6Ffm24
      Ответить
      • >Именно поэтому я за «PHP»
        Поддерживаю.

        Помню много лет назад на ГК выясняли как в разных ЯП работают циклы по плавающим питухам в целом и сравнения в частности.

        Так вот в РНР они в отличие от большинства остальных языков (о ужас!) все работало более-менее нормально, т.к. в либе были эпсилоны из коробки.
        Ответить
        • "PHP" - лучший. Я всегда декларировал это; но меня отказывались и отказываются понимать.

          Распечатал твой комментарий, поместил в рамку и повесил на стену.
          Ответить
          • Между прочим «PHP» становится динамически тупизированным клоном унылой жабывсё более приличным языком.

            Уже и функции стали бросать исключения вместо ворнингов, и опциональные типы завезли. Скоро JIT напилят, auto type inference сбацают и всё будет вообще хорошо.
            Ответить
            • ПХП просто стал еще более неконсистентным дерьмом
              Хочешь -- объявляешь интерфейс статически
              Хочешь -- не объявялешь
              Ответить
              • >ПХП просто стал еще более неконсистентным дерьмом

                Неконсистентное дерьмо это ECMA 6, 7, 8, ...

                То ли дело «PHP», который к 5ой версии докатился до того, что уже невозможно было сделать хуже.
                Ответить
    • Бамп отсосу питоноблядей.
      Ответить
    • 0.1 + 0.2 != 0.3
      Ответить
      • Бамп отсосу питоноблядей!

        Кстати, в "PHP" тоже 0.1 + 0.2 != 0.3, но при этом echo 0.1 + 0.2; выводит 0.3.
        Ответить
        • Пыхобляди соснули!
          Ответить
        • irb(main):001:0> (0.1 + 0.2) == 0.3
          false

          ну уж если руби так говорит то я тоже так думаю

          Плавающие питуксы такие плавающе
          Ответить
          • Бамп отсосу рубиблядей!
            Ответить
          • А во Фрипескаре в компайлтайме 0.1 + 0.2 равно 0.3:
            https://ideone.com/wedhua

            А в рантайме не равно для Double:
            https://ideone.com/gJU5Rq

            И равно для Extended:
            https://ideone.com/kwWkWx
            Ответить
            • Бамп отсосу даблоблядей!
              Ответить
            • use strict;
              use warnings;
              
              print 0.1 + 0.2; #0.3


              perl ruls
              Ответить
              • «PHP» тоже 0.3 выводит. А если на равенство проверить?
                Ответить
                • ну тогда перл отсосет, да.

                  тут руби и питон чеснее конечно
                  Ответить
                  • Бамп отсосу перлоблядей!
                    Ответить
                    • ладно, вот тебе руби
                      class Float
                        def ==(other_object)
                      	true
                        end
                      end
                      
                      p ((0.1 + 0.2) == 0.3) # true


                      что, соснул?
                      Ответить
                      • class Float
                          def ==(other_object)
                        	true
                          end
                        end
                        
                        p ((0.5 + 0.7) == 0.3)


                        Ага.
                        Ответить
                        • class Float
                            def ==(other_object)
                          	 (0.2..0.4) === self 
                            end
                          end
                          
                          p ((0.5 + 0.7) == 0.3) #False
                          p ((0.1 + 0.2) == 0.3) #True


                          зануда ебучий!!
                          так лучше??
                          Ответить
                    • use bigint;
                      use strict;
                      
                      if (0.1 + 0.2 == 0.3) {
                        print "OK";
                      }



                      перл тебя ВЗГРЕЛ чувак!!

                      Признай что лучше руби и перла языков нет!
                      Ответить
                      • По этому я за луа
                        Ответить
                        • а как в луа через матьатататата перегрузить плюс да еще и у числа?!
                          Ответить
                          • _add и через дебаг метатаблицу можно назначит любой хуйне. Сам лично боюсь дебагом непользоваться, и Роберто не рекомендует.
                            Ответить
                          • Можно и иным способом, через _EVN
                            Ответить
                            • попопопопясни за _ENV

                              чтобы провернуть динаму нам нужно две таблы с одинаковой метатататататаблой в которой __eq и __add перегружены

                              если у таблов разные метатататаблы то они не складовываются

                              как мне тут помоможет энв?
                              Ответить
                              • Ну блядь _env ты задаешь метаметот ньюиндекс и блядь просто берешь в место ванильного присвоения ты еще и задашь метатаблу хуяришь метаметод адд и поведение и теперь любая вагина складывается жуйговно={} +{}. Так как любая теперь таблицы автоматом будет с метаметодом адд, кроме локалей и вложеных табли и тд. Я бы тебе показал, но только с компа покажу.
                                Ответить
                                • у тебя инсульт?
                                  Ответить
                                  • Ну вот моего друга в этом году уже не осталось. Я не знаю что делать дальше с ним. Но он меня не знает. Только я и сам с этого места я уже и так и сам он меня достал из за того что я не знаю могу ли он меня в этом году в этот период года и в этом и не был уверен что он был и в тот же день в этом и в итоге написало и яблочки.
                                    Ответить
                                • SHOW ME ZE KOD PLZ!
                                  Ответить
                                  • Я толи что-то упускаю, толи я соснул. В общем метаметоды перегружают все типы, кроме number и nil.
                                    setmetatable(_ENV,{__newindex = function(self, key, value)
                                          rawset(self, key, debug.setmetatable(value, {
                                                __add = function(a,b)
                                                  print("huy") --проверочный вызов.
                                                return tostring(a)..tostring(b); end}))
                                          end})
                                    a=1; --это костыль чтоб _G приняло метатаблицу на number.
                                    print(1+1) --хуй знает, не работают метаметоды на number. --2
                                    for k,v in pairs(getmetatable(1)) do
                                      print(k,v) --но мета то есть
                                    end
                                    print("petushik"+1)--Но это блядь роботает! --petushik1

                                    https://ideone.com/sc7eWp
                                    Ответить
                      • NB. угадай язык
                           0.1 + 0.2
                        0.3
                           0.3 = 0.1 + 0.2 
                        1
                        Ответить
                        • Причём точность можно настроить с помощью '!.':
                          (2 ^ _44) = (2 ^ _44) - 2 ^ _88
                          0
                             
                             (2 ^ _44) =!.(2 ^ _34) (2 ^ _44) - 2 ^ _88
                          1
                          Ответить
                          • ебанутый
                            Ответить
                            • eq =: =!.(2 ^ _34)
                                  (2 ^ _44) eq (2 ^ _44) - 2 ^ _88
                              Всё остальное здесь, обычная математическая нотация, за исключением _ вместо -, но зато это позволяет использовать его в литералах, и делает синтаксис более однозначным.
                              Ответить
                            • https://youtu.be/VvazFfEDPvU
                              Ответить
                              • >All numbers in JavaScript are stored in 64-bit format IEEE-754,
                                бля, это правда?!
                                Ответить
      • Бляджь мой любивый lua тоже соснул. А я думал не соснет!
        print((0.7-0.4)<0.3,(0.7-0.4)==0.3,(0.7-0.4)) --true false 0.3
        Ответить
        • Ну не такая уж и проблема.
          print((math.ceil((0.7-0.4)*10)/10) == 0.3) --true
          Ответить
          • Забавно
            -- math.modf возвращает два числа: целую часть x и дробную часть x
            print(math.modf((0.7-0.4)*10)) --2 1
            --Но
            print(math.modf((0.7-0.4)*100)) --29 0.99999999999999
            print(math.modf((0.7-0.4)*1000)) -- 299	0.99999999999994
            print(math.modf((0.7-0.4)*10000))--2999	0.99999999999955
            print(math.modf((0.7-0.4)*100000))--29999	0.99999999999272
            print(math.modf((0.7-0.4)*1000000))--299999	0.99999999994179
            print(math.modf((0.7-0.4)*10000000))--2999999	0.99999999953434
            Ответить
        • Сосут не языки, а плавающие петухи, которых они используют, но хотя для 'J' это не помеха.
          Ответить
    • питонобляди соснули
      Ответить
    • зачем тебе айпайтон ноутбук?!
      ты что, датасайнтесит?
      Ответить
      • Он не умеет писа́ть без автодополнения.
        Ответить
        • тогда пускай возьмет джаву
          или котлин
          или C#
          или swift
          там все автодополняется оч хорошо
          Ответить
      • А ты в чем пишешь, питушок?
        Ответить
        • Я пишу в «Notepad++» и теку.

          А по ночам, когда никто не видит, открываю «VSCode» и теку ещё больше.
          Ответить
    • >>> from fractions import Fraction as F
      >>> F(14, 100)*100
      Fraction(14, 1)

      Именно поэтому я за «дроби».
      Ответить
    • $ echo "0.1 + 0.3" | bc
      .4

      все соснули у бэцэ
      Ответить
    • у пау
      у пау
      у пауэршела
      соснули
      соснули
      PS C:\Windows\system32> (0.1 + 0.2)
      0,3
      Ответить
      • Позанудствую. А если проверить на равенство?
        Ответить
        • PS C:Windowssystem32> (1.9 + 1.1) -eq (3.0)
          True


          говорю же сосут у повершала
          Ответить
          • Нечестно! Ты числа подобрал, читер.
            PS C:\Users\user> (0.1 + 0.2) -eq 0.3
            False
            PS C:\Users\user> (1.1 + 1.2) -eq 2.3
            True
            Ответить
          • Проверил на полочке в терминале в Windows 7 Впадлып
            PS C:\Users\Inspiron-PC> (0.1+0.2-0.3)
            5,55111512312578E-17
            PS C:\Users\Inspiron-PC> (0.14*100-14)
            1,77635683940025E-15
            Чё оно так виснет и воняет? Всё выключаю обратно!
            Ответить
            • Бамп отсосу макоблядей!
              Ответить
              • Напомню признаки 95%, не могущего в компьютеры... однако никто не страдает!
                Ответить
              • тебе на AppleScript написать чтоли или на свифте?
                Ответить
      • Туда календарную неделю уже завезли?
        Ответить
        • NB. Угадай язык
             {:weeknumber 2019 1 1
          1
          Ответить
        • Завезли, проверь:
          (get-culture).Calendar.GetWeekOfYear((get-date), 0, 1)

          Здесь 0 –— это [DayOfWeek]::Monday.value__, а 1 –— это [System.Globalization.CalendarWeekRule]::FirstDay.value__
          Ответить
          • Пормешель не нужен, когда есть 'J'. Именно поэтому я за 'J'.
            Ответить
          • > (get-culture).Calendar
            > (get-date)
            Какой-то странный у вас «Лисп».
            Ответить
          • Это именно календарная, а не количество семидневок с начала года?
            Ответить
            • https://docs.microsoft.com/ru-ru/dotnet/api/system.globalization.calendar.getweekofyear


              Аргументы GetWeekOfYear:

              1) time: DateTime.

              2) rule: CalendarWeekRule. Всего три варианта: 0, 1 или 2.
              • [System.Globalization.CalendarWeekRule]::FirstDay или 0
              Указывает, что первая неделя года начинается в первый день года и заканчивается перед назначенным первым днем недели.

              Перевожу: первая неделя начинается 1 января и может быть неполной, если 1 января — это не понедельник (не первый день недели в общем случае). Ближайший к Новому году понедельник, следующий после 1 января, будет уже на второй неделе.

              • [System.Globalization.CalendarWeekRule]::FirstFourDayWeek или 2
              Указывает, что первой неделей года является первая неделя, состоящая из четырех или более дней, следующих перед назначенным первым днем недели.

              Перевожу: этот вариант тебе никогда не пригодится.

              • [System.Globalization.CalendarWeekRule]::FirstFullWeek или 1
              Указывает, что первая неделя года начинается с назначенного первого дня недели, который встречается первым в году.

              Перевожу: первая неделя начинается с ближайшего к Новому году понедельника (в общем случае с выбранного первого дня недели), даже если он позже первого января. Т. е. нумерация начинается с ближайшей к новому году полной недели. 1 января может оказаться в «нулевой» неделе, если оно выпало не на понедельник (не на первый день недели в общем случае).

              3) firstDayOfWeek: DayOfWeek. Это тупо внутреннее представление первого дня недели.

              В Восточной Европе и в странах, принявших ISO, (в Германии, например, ибо DIN, как и ГОСТы, обычно копируют ISO) неделю принято начинать с понедельника. По-виндовому это 1.

              В Западном полушарии, а также в Японии и в Индии неделю принято начинать с воскресенья. По-виндовому это 0.

              В исламских странах неделя может начинаться с субботы. По-виндовому это 6.
              Ответить
              • P.S. Кстати, код я написал правильно:
                (get-culture).Calendar.GetWeekOfYear((get-date), 0, 1)

                А расшифровку перепутал.

                Здесь 0 — это [System.Globalization.CalendarWeekRule]::FirstDay.value__, а 1 — это [DayOfWeek]::Monday.value__.

                Теперь всё точно.
                Ответить
    • автор открыл для себя числа с плавающей точкой? следующим шагом будет -1 == 256
      Ответить
    • Посчитал в...
      ~ via ⬢ v10.15.3 
      ✦ ➜ php --interactive
      Interactive mode enabled
      
      php > echo 0.1+0.2-0.3;
      PHP Parse error:  syntax error, unexpected 'echo' (T_ECHO), expecting ',' or ';' in php shell code on line 2
      php > echo 0.1 + 0.2 - 0.3;
      5.5511151231258E-17
      php > echo 0.14 * 100 - 14;
      1.7763568394003E-15
      php > 
      
      ~ via ⬢ v10.15.3 took 26s
      ✦ ➜ ghci 
      GHCi, version 7.10.3: http://www.haskell.org/ghc/  :? for help
      Prelude> 0.1+0.2-0.3
      5.551115123125783e-17
      Prelude> 0.14*100-14
      1.7763568394002505e-15
      Prelude> :quit 
      Leaving GHCi.
      
      ~ via ⬢ v10.15.3 took 18s 
      ✦ ➜ node
      > 0.1+0.2-0.3
      5.551115123125783e-17
      > 0.14*100-14
      1.7763568394002505e-15
      > 
      (To exit, press ^C again or type .exit)
      > 
      
      ~ via ⬢ v10.15.3 took 16s 
      ✦ ➜ swift 
      Welcome to Swift version 4.2.1 (swift-4.2.1-RELEASE). Type :help for assistance.
        1> 0.1+0.2-0.3
      $R0: Double = 0.000000000000000055511151231257827
        2> 0.14*100-14
      $R1: Double = 0.0000000000000017763568394002505
        3> ^C
        3> ^C
        3> ^C
        3> :exit
      
      ~ via ⬢ v10.15.3 took 20s 
      ✦ ➜ python
      Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 05:52:31) 
      [GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)] on darwin
      Type "help", "copyright", "credits" or "license()" for more information.
      >>> 0.1+0.2-0.3
      5.551115123125783e-17
      >>> 0.14*100-14
      1.7763568394002505e-15
      >>> 
      KeyboardInterrupt
      >>> 
      KeyboardInterrupt
      >>> 
      KeyboardInterrupt
      >>> :exit
        File "<stdin>", line 1
          :exit
          ^
      SyntaxError: invalid syntax
      >>> :quit
        File "<stdin>", line 1
          :quit
          ^
      SyntaxError: invalid syntax
      >>> :q
        File "<stdin>", line 1
          :q
          ^
      SyntaxError: invalid syntax
      >>> 
      >>> 
      >>> 
      [2]  + 29330 suspended  python
      
      ~ via ⬢ v10.15.3 took 23s 
      ✦2 ➜ zsh              
      
      ~ via ⬢ v10.15.3 
      ➜ print $((0.1+0.2-0.3))
      5.5511151231257827e-17
      
      ~ via ⬢ v10.15.3 
      ➜ print $((0.14*100-14))
      1.7763568394002505e-15
      
      ~ via ⬢ v10.15.3 
      ➜ exit
      
      ~ via ⬢ v10.15.3 took 1m 6s 
      ✦2 ➜
      Ответить
      • И ещё посчитал в...
        ✦2 ➜ bc -i
        bc 1.06.95
        Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
        This is free software with ABSOLUTELY NO WARRANTY.
        For details type `warranty'. 
        0.1+0.2-0.3
        0
        0.14*100-14
        0
        0.1*0.1
        0
        ^C
        (interrupt) use quit to exit.
        ^C
        (interrupt) use quit to exit.
        exit
        0
        exit
        0
        quit
        
        ~ via ⬢ v10.15.3 took 32s
        Какой баг!
        Ответить
      • Из Питона выход через quit()
        Это же не vi(m), чтобы начинать команду с двоеточия.
        Ответить
        • https://exitvim.net/
          Ответить
        • >>> quit
          Use quit() or Ctrl-Z plus Return to exit
          >>> exit
          Use exit() or Ctrl-Z plus Return to exit
          Ответить
          • >>> close
            NameError: name 'close' is not defined
            >>> q
            NameError: name 'q' is not defined
            >>>
            KeyboardInterrupt
            >>>
            KeyboardInterrupt
            >>>
            KeyboardInterrupt
            >>> как выйдти
            Крестик нажми, епта
            Ответить
            • То ли дело BL WORD Forth:
              : dict
                  wordlist >r
                  create immediate [email protected] ,
                  get-current r> set-current
                  does>
                    @ >r get-order r> 1 set-order
                      ' state @
                      if compile,
                      else execute
                      then
                    set-order ;
              : skip-spaces
                  begin
                    tib >in @ + [email protected] bl =
                  while
                    1 >in +!
                  repeat ;
              : s
                  skip-spaces
                  tib >in @ + [email protected]
                  1 >in +!
                  parse
                  state @
                  if postpone sliteral
                  then ; immediate
              
              dict как
                  : выйти  ." Введи `bye'" cr ;
                  dict вывести
                      : число  ." Введи `.'" cr ;
                      : строку
                          s *Если строка заранее известна, то можно использовать `." строка"', * type
                          s "если на стеке дан адрес строки и её длина, то вывести её можно с помощью слова `type'" type cr ;
                      : пятно  s 'Используй "Vanish"' type cr ;
                  set-current
                  : так?  ." А вот так!" ;
              set-current
              
              как выйти
              как вывести число
              как вывести строку
              как вывести пятно
              как так?
              https://ideone.com/JK9Aub
              Ответить
              • поехавший
                Ответить
                • BL PARSE Forth произвольно расширяем и синтаксически, и семантически, причём прямо во время работы, а как обстоят дела у твоего любимого языка?
                  Ответить
        • По этому я за lua
          os.exit()
          Ответить
        • Оказывается можно Ctrl+D
          Ответить
          • На прысчах Цтрл-В обозначает конец файла, так чуть ли не из любого интерпретатора выйти можно.
            Ответить
            • > Цтрл-B
              схуяб?

              на прыщах есть подсистема tty. В ней есть дисциплина. В обычной дисциплине есть вошлебные сочетания, например CTRL+D (пишется ^D) означает EOF.
              Дэ блядь, не вэ.
              Но это можно изменить.

              Те кто юзают readline могут и положить на дисциплину (они переключают tty в режим raw), но не обязаны. Например cat(1) юзает cookied tty и ложить ни на что не может.

              Управлять специсимволами (и вообще содержимым всей структуры привязанной к tty) можливо с помощью stty(1)

              $ stty eof ^T
              $ python
              # теперь выйти можно через CTRL+T
              Ответить
              • ┌──┐
                │D │
                │ В│
                └──┘
                Jq? ,kznm? cgfcb,j? f z b yt pyfk/
                Ответить
                • читай tty demystified, там процентов 70% знаний содержится з того що я тут понаписв
                  Ответить
                  • ┌──┐┌──┐┌──┐┌──┐┌──┐
                    │A ││S ││D ││F ││G │
                    │ Ф││ Ы││ В││ А││ П│
                    └──┘└──┘└──┘└──┘└──┘
                    Ответить
                • Но у тебя "B" не русская, так что не пизди.
                  Ответить
      • Соснули все!
        Ответить
    • Питушок питушок
      Золотой гребешок
      Маслена головушка
      Шелкова бородушка
      Раано встаешь
      Гроомко поешь

      Лежебокам спать не даешь
      Ответить

    Добавить комментарий