The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Компания Google анонсировала язык программирования Dart 2, opennews (ok), 24-Фев-18, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


9. "Компания Google анонсировала язык программирования Dart 2"  +/
Сообщение от Аноним (-), 24-Фев-18, 21:52 
npm leftpad, null/undefined, 0.1 + 0.2 = 3.000000000000004
Ответить | Правка | Наверх | Cообщить модератору

11. "Компания Google анонсировала язык программирования Dart 2"  –3 +/
Сообщение от Аноним (-), 24-Фев-18, 21:58 
Смешит некомпетентность

python> 0.1+0.2
0.30000000000000004

Clojure 1.8.0
user=> (+ 0.1 0.2)
0.30000000000000004

Для разъяснений гугли IEEE 754

Ответить | Правка | Наверх | Cообщить модератору

14. "Компания Google анонсировала язык программирования Dart 2"  –11 +/
Сообщение от pavlinux (ok), 24-Фев-18, 22:01 
> Смешит некомпетентность

Дописывать лишние нули в мантису это по IEEE?


finit
fld 0.1
fld 0.2
fadd
...

Не вызывает никаких переполнений и исключений.
На лицо рукожопистость выскокоуровневых кодеров.

Ответить | Правка | Наверх | Cообщить модератору

39. "Компания Google анонсировала язык программирования Dart 2"  +7 +/
Сообщение от Аноним (-), 25-Фев-18, 01:22 
> На лицо рукожопистость выскокоуровневых кодеров.


$ cat float.c && gcc float.c&& ./a.out
#include <stdio.h>

int main(void) {
    printf("%.20f\n",.1+.2);
    return 0;
}

0.30000000000000004441


Ответить | Правка | Наверх | Cообщить модератору

99. "Компания Google анонсировала язык программирования Dart 2"  +2 +/
Сообщение от какойто другой аноним (?), 25-Фев-18, 14:04 
>> Смешит некомпетентность
> Дописывать лишние нули в мантису это по IEEE?

[...]
> Не вызывает никаких переполнений и исключений.
> На лицо рукожопистость выскокоуровневых кодеров.

Никто ничего не дописывает.
Просто в описанном в IEEE 754 способе кодирования чисел невозможно точно представить числа 0.1 и 0.2. Эти числа в двоичной системе счисления записываются как бесконечная периодическая дробь, которая на каком-то уровне должна быть обрезана и округлена.

>>> (0.1).hex()

'0x1.999999999999ap-4'
>>> (0.2).hex()

'0x1.999999999999ap-3'

как видно, оба раза числа представлены с небольшим избытком, поэтому и сумма такая,
>>> (0.1+0.2).hex()

'0x1.3333333333334p-2'

хотя для 0.3 более точным представлением является
>>> (0.3).hex()

'0x1.3333333333333p-2'

Коллега, если вас не затруднит - покажите как у вас представилось в памяти 0.1 и 0.2.

Ответить | Правка | К родителю #14 | Наверх | Cообщить модератору

43. "Компания Google анонсировала язык программирования Dart 2"  +/
Сообщение от Аноним (-), 25-Фев-18, 01:39 
> python> 0.1+0.2
> 0.30000000000000004
> Clojure 1.8.0
> user=> (+ 0.1 0.2)
> 0.30000000000000004


% прогресс такой прогресс )
?- X is 1 rdiv 10 + 2 rdiv 10, format('X is ~50f~n',[X]).
X is 0.30000000000000000000000000000000000000000000000000
X = 3 rdiv 10.

Ответить | Правка | К родителю #11 | Наверх | Cообщить модератору

94. "Компания Google анонсировала язык программирования Dart 2"  +/
Сообщение от какойто другой аноним (?), 25-Фев-18, 13:43 
Простите за занудство,
а извлечение квадратного корня тоже оставляет числа рациональными?

если нет, то так-то я и на python могу:
>>> from fractions import Fraction
>>> Fraction(1,10)+Fraction(2,10)

Fraction(3, 10)
>>> Fraction(2, 10)**2

Fraction(1, 25)
# квадрат оставил рациональным
>>> Fraction(1, 25)**0.5

0.2
# а корень - нет, получился float

Ответить | Правка | Наверх | Cообщить модератору

106. "Компания Google анонсировала язык программирования Dart 2"  +/
Сообщение от Аноним (-), 25-Фев-18, 15:43 
> если нет, то так-то я и на python могу:
>>>> from fractions import Fraction
> так-то
> import Fractions

/0

Может, лучше сразу загрузить Sage?
А то ведь без Sage, с возможностью использования древней коробочной библиотеки, для молодежных питонов опять все грустно станет )


?- use_module(library(clpq)).
true.
?- {3/X = 1/X + 2/10}.
X = 10.
?- {3/X =:= 1/X + 2/X, X - Y = 5, Y = X/2}.
X = 10,
Y = 5.
?- {3/10 =:= X + Y, Y - X = 1/10}.
X = 1 rdiv 10,
Y = 1 rdiv 5.

> Fraction(1, 25)
> # квадрат оставил рациональным
>>>> Fraction(1, 25)**0.5


?- X is rationalize((1 rdiv 25) ** rationalize(0.5)), format('X is ~50f~n',[X]).
X is 0.20000000000000000000000000000000000000000000000000
X = 1 rdiv 5.

?- {1/2 = X ^ (1/2)}.
X = 1 rdiv 4.

Ответить | Правка | Наверх | Cообщить модератору

119. "Компания Google анонсировала язык программирования Dart 2"  +1 +/
Сообщение от freehckemail (ok), 25-Фев-18, 20:40 
> ?- X is rationalize((1 rdiv 25) ** rationalize(0.5)), format('X is ~50f~n',[X]).
> X is 0.20000000000000000000000000000000000000000000000000
> X = 1 rdiv 5.

и ещё раз:

> X is rationalize((1 rdiv 25) ** rationalize(0.5))

и ещё крупнее:

> X is rationalize(...)

Ах, и О ЧУДО! Оно после этого вывело 0.2! Вот это да! Как же так получилось?! :P
Ты чего это подтасовками разного рода занимаешься? :)

Ответить | Правка | Наверх | Cообщить модератору

124. "Компания Google анонсировала язык программирования Dart 2"  +1 +/
Сообщение от Аноним84701 (ok), 25-Фев-18, 23:16 
> Ах, и О ЧУДО! Оно после этого вывело 0.2! Вот это да!
> Как же так получилось?! :P

Оно вообще-то выводит 0.1999... ;)


?- X is (1 rdiv 25) ^ rational(0.5), Y is rational(X), Z is rationalize(X), format('X is ~50f~n',[X]).
X is 0.19999999999999998334665463062265189364552497863770
X = 0.19999999999999998,
Y = 7205759403792793 rdiv 36028797018963968,
Z = 1 rdiv 5

Хотя, дело скорее в  отсутствии cоотв. правил/движка.
В сикстусе года 2009-2010 constraint solver с рациональщиной вроде очень даже помощнее были, но то было давно и уже почти не правда (не помню точно, может из серии "солнце ярче и трава зеленее").

Но в принципе, неплохо для ЯП начала 70ых (ну хорошо, для дополнений к стд. библиоткам годов 95'ых и честно перетыренной в YAP/SWI  _идеи_ из мерзко-проприетарного SICStusa :) ).
А насчет подтасовок -- Fractions в питон добавили в 2.6, да и подгружать его нужно ... и вообще, как можно быть против теплого и лампового Пролога, занимая сторону холодной и склизкой змеюки?! o_O

Ответить | Правка | Наверх | Cообщить модератору

118. "Компания Google анонсировала язык программирования Dart 2"  +/
Сообщение от freehckemail (ok), 25-Фев-18, 20:37 
> Простите за занудство, а извлечение квадратного корня тоже оставляет числа рациональными?
> ...
> а корень - нет, получился float

Естественно, что float. Корень из рационального числа может возвращать иррациональное.
Об этом можно подробно почитать в теории множеств (буквально первые страницы). Или погуглить про дедекиндовы сечения. Ну или вот:
https://ru.wikipedia.org/wiki/%D0%98%D1%...

Ответить | Правка | К родителю #94 | Наверх | Cообщить модератору

13. "Компания Google анонсировала язык программирования Dart 2"  –6 +/
Сообщение от Ан (??), 24-Фев-18, 21:59 
"npm leftpad" не относится к стандарту языка. Только "typeof null === 'object'" есть архитектурный косяк. Но я не думаю что это единственный язык где такое может встретиться. Я в свое время слышал так же много дерьма про PHP только вот почему то его так часто не вспоминают. А JS вспоминают потому что он становится популярнее с каждый днем и это кому то мозоль похоже натирает.
Ответить | Правка | К родителю #9 | Наверх | Cообщить модератору

20. "Компания Google анонсировала язык программирования Dart 2"  –1 +/
Сообщение от Аноним (-), 24-Фев-18, 22:12 
Всё становится популярнее. А вот отсутствие строгой типизации позволяет стрелять по ногам более лучше.
Ответить | Правка | Наверх | Cообщить модератору

22. "Компания Google анонсировала язык программирования Dart 2"  –8 +/
Сообщение от pavlinux (ok), 24-Фев-18, 22:13 
> Всё становится популярнее. А вот отсутствие строгой типизации позволяет стрелять по ногам
> более лучше.

Стухель, не позорься.

Ответить | Правка | Наверх | Cообщить модератору

84. "Компания Google анонсировала язык программирования Dart 2"  –1 +/
Сообщение от Аноним (-), 25-Фев-18, 12:31 
Сахар от TypeScript спасает.
Ответить | Правка | К родителю #20 | Наверх | Cообщить модератору

32. "Компания Google анонсировала язык программирования Dart 2"  +/
Сообщение от Crazy Alex (ok), 24-Фев-18, 22:55 
На пхп в своё время ругались не меньше. Но, в отличие от, в своё время плюнул и много чего починил, сломав совместимость. То, что я сейчас у коллег на PHP вижу, больше всего напоминает Java, пожалуй - суровое ООП "по всем канонам". IMHO, даже слишком суровое, но это уже мои предубеждения :-)

А в JS с совместимостью косяков носятся как дурень с писаной торбой, даже со всеми вашими транспайлерами.

Ответить | Правка | К родителю #13 | Наверх | Cообщить модератору

56. "Компания Google анонсировала язык программирования Dart 2"  –2 +/
Сообщение от Аноним (-), 25-Фев-18, 04:37 
> сейчас у коллег на PHP вижу, больше всего напоминает Java

Делать Java'у из PHP ? - Фу таким быть.

PS: ни разу не помазано PHP'шниной.

Ответить | Правка | Наверх | Cообщить модератору

70. "Компания Google анонсировала язык программирования Dart 2"  +/
Сообщение от Crazy Alex (ok), 25-Фев-18, 09:05 
Я тут сто раз писал, и ещё раз повторю - громоздкость энтерпрайзной джавы со всеми её фабриками и прочим - она не для прикола придумана, а для того, чтобы средний/большой софт вообще можно было хоть как-то предсказуемо писать и поддерживать, потому что гениальных кодеров мало. В пыхе она отросла ровно по той же причине. И уж всяко это лучше той печальной мешанины, что была в нём раньше.
Ответить | Правка | Наверх | Cообщить модератору

68. "Компания Google анонсировала язык программирования Dart 2"  +2 +/
Сообщение от Аноним (-), 25-Фев-18, 08:53 
Чувак видимо не знает что десятичные дроби нельзя представить точно в двоичном представлении и что все операции с плавающей точной точного результата не дают.
Это не JavaScript виноват, а то что в компьютере двоичная система счисления, а не десятичная.
Ответить | Правка | К родителю #9 | Наверх | Cообщить модератору

85. "Компания Google анонсировала язык программирования Dart 2"  +/
Сообщение от Аноним (-), 25-Фев-18, 12:33 
Скорее виновата эволюция и наличие десяти пальцев. Вот было бы их 12... эх, мечты, мечты.
Ответить | Правка | Наверх | Cообщить модератору

111. "Компания Google анонсировала язык программирования Dart 2"  +2 +/
Сообщение от Анонимный рептилоид (?), 25-Фев-18, 18:03 
> Скорее виновата эволюция и наличие десяти пальцев. Вот было бы их 12...

Брат, не пались! У человеков их аж 20. И двадцатиричная система чисел у них использовалась. У народа маек или маёв. Потом видимо появилась мода на обувь и человеки, в угоду моде, перешли на десятиричную систему.

Ответить | Правка | Наверх | Cообщить модератору

136. "Компания Google анонсировала язык программирования Dart 2"  +/
Сообщение от _ (??), 27-Фев-18, 20:38 
>Брат, не пались! У человеков их аж 20.

Если уж "брат" - то 21 ;-)

Ответить | Правка | Наверх | Cообщить модератору

147. "Компания Google анонсировала язык программирования Dart 2"  +/
Сообщение от Человек (??), 27-Фев-18, 23:15 
>>Брат, не пались! У человеков их аж 20.
> Если уж "брат" - то 21 ;-)

Еще один совсем не палится.
Хладнейший (таково ведь нейтральное, умеренно-уважительное обращение?) ЭТО вообще-то не считается за палец уже лет сто как минимум. Учите таки мат-часть, если не хотите, чтобы ваши рабы мерли как мухи!


Ответить | Правка | Наверх | Cообщить модератору

112. "Компания Google анонсировала язык программирования Dart 2"  +/
Сообщение от Аноним (-), 25-Фев-18, 19:07 
>Чувак видимо не знает что десятичные дроби нельзя представить точно в двоичном представлении и что все операции с плавающей точной точного результата не дают.

1/2, 3/16 и все дроби, где знаменатель степень двойки, ы? Но на самом деле, это скорей исключения.
>Это не JavaScript виноват, а то что в компьютере двоичная система счисления, а не десятичная.

Тут проблемы с разрядностью в первую очередь, а уже затем вопрос принципиальной возможности точного представления рациональных чисел по IEEE 754.

Ответить | Правка | К родителю #68 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру