The OpenNET Project / Index page

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



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

Оглавление

Язык Go избавляется от неполиткорректных терминов whitelist/..., opennews (??), 07-Июн-20, (0) [смотреть все]

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


595. "Язык Go избавляется от неполиткорректных терминов whitelist/..."  +/
Сообщение от Карабьян (?), 10-Июн-20, 19:16 
Что ругается, то нормально, а вот почему при других случаях (в последнем примере) не ругается, это несколько странно

И раз Перл упомянули, почему в некоторых случаях, совсем нередких, при коротких достаточно числах - четыре-пять десятичных знака после запятой, он к числу добавляет или убавляет свой эпсилон (0.00...001), и делает его очень длинным в итоге, и как этого избежать?

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

597. "Язык Go избавляется от неполиткорректных терминов whitelist/..."  +/
Сообщение от Anonymoustus (ok), 10-Июн-20, 19:54 
Вопрос очень хороший! Когда я интересовался для себя ответом на него, мне было некогда разобраться досконально. Насколько я помню, для вычислений предлагают использовать особые математические библиотеки со СПАНа. И, опять же, насколько я помню, Перл считает все числа числами с плавающей запятой. Вот что нашлось при беглом гуглении, и там пишут, что да:

> Интерпретатор языка Perl представляет все числа (и целые, и вещественные) в формате чисел с плавающей точкой удвоенной точности. Это означает, что реально нельзя задать больше шестнадцати значащих цифр мантиссы, а экспонента ограничена диапазоном от -323 до +308. Интерпретатор не сгенерирует ошибки, если мантисса будет превосходить 16 цифр, а экспонента 3 цифры, но при отображении таких чисел мантисса будет приведена к шестнадцати значащим цифрам. Если экспонента меньше нижнего предела, то будет выводиться нуль, а если больше верхнего предела, то используется специальный символ 1.#INF, обозначающий бесконечно большое число. Подобный алгоритм представления очень больших и очень маленьких чисел не приводит к возникновению, соответственно, ошибок переполнения и исчезновения порядка, свойственной многим языкам программирования. Если задать целое число с числом значащих цифр больше 15, то при выводе оно будет отображаться как вещественное в экспоненциальной форме.

http://i-vd.org.ru/books/perl/types_of_data.shtml

http://perl.find-info.ru/perl/015/number/1.htm


А в шестом Перле этот вопрос был переосмыслен в стиле, напоминающем Питон.

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

599. "Язык Go избавляется от неполиткорректных терминов whitelist/..."  +/
Сообщение от Карабьян (?), 10-Июн-20, 20:06 
Спасибо Вам!
Вы, наверное, подумали, что я имел в виду длинные числа в перле, их использование, однако изначально там были совсем короткие числа типа 1.12345, при сложении которых, например, получалось что нибудь вроде 1.2000000000000000000...1 или 1.1999999999999999...9
Ответить | Правка | Наверх | Cообщить модератору

600. "Язык Go избавляется от неполиткорректных терминов whitelist/..."  +/
Сообщение от Карабьян (?), 10-Июн-20, 20:08 
Во второй Вашей ссылке предлагается округлять до некоторой точности, что снимает проблему. Еще раз спасибо
Ответить | Правка | К родителю #597 | Наверх | Cообщить модератору

601. "Язык Go избавляется от неполиткорректных терминов whitelist/..."  +/
Сообщение от Anonymoustus (ok), 10-Июн-20, 20:13 
> Во второй Вашей ссылке предлагается округлять до некоторой точности, что снимает проблему.
> Еще раз спасибо

Всё дело именно в округлении, да.


Где-то после запятой Перл находит «лишние» знаки и сам их приводит к удобному для нас, по его мнению, представлению к нашим услугам. :)


Следующий пример несколько не по теме, но по-своему примечательный и тоже про арифметику: в зависимости от того, как задано число, интерпретатор Питона (2.7) его трактует по-разному.


>>> 2/3

0
>>> 2.0 / 3.0

0.6666666666666666
>>>


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

602. "Язык Go избавляется от неполиткорректных терминов whitelist/..."  +/
Сообщение от Аноним (561), 10-Июн-20, 20:59 
> Следующий пример несколько не по теме, но по-своему примечательный и тоже про
> арифметику: в зависимости от того, как задано число, интерпретатор Питона (2.7)
> его трактует по-разному.
> >>> 2/3
> 0
> >>> 2.0 / 3.0
> 0.6666666666666666

В С/С++, Java, и во многих других языках — так же, разве нет?


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

603. "Язык Go избавляется от неполиткорректных терминов whitelist/..."  +/
Сообщение от Anonymoustus (ok), 10-Июн-20, 21:37 
>> Следующий пример несколько не по теме, но по-своему примечательный и тоже про
>> арифметику: в зависимости от того, как задано число, интерпретатор Питона (2.7)
>> его трактует по-разному.
>> >>> 2/3
>> 0
>> >>> 2.0 / 3.0
>> 0.6666666666666666
> В С/С++, Java, и во многих других языках — так же, разве
> нет?

По-разному. Даже в Пихтоне по-разному. ;-)


$ python2
Python 2.7.13 (default, Sep 26 2018, 18:42:22)
[GCC 6.3.0 20170516] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 2 / 3

0
>>> 2.0 / 3.0

0.6666666666666666
>>>


$ python3
Python 3.5.3 (default, Sep 27 2018, 17:25:39)
[GCC 6.3.0 20170516] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 2 / 3

0.6666666666666666
>>>


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

604. "Язык Go избавляется от неполиткорректных терминов whitelist/..."  +/
Сообщение от Карабьян (?), 11-Июн-20, 08:12 
Только округлять-то приходится данные после подсчетов перла, а не до (из коротких он делает безумно длинные, а не наоборот)
А что касается примера на Питоне, то тут поведение схоже с Си, несмотря на то, что в последнем кое-какие типы данных все же поддерживаются
Ответить | Правка | К родителю #601 | Наверх | Cообщить модератору

605. "Язык Go избавляется от неполиткорректных терминов whitelist/..."  +/
Сообщение от Карабьян (?), 11-Июн-20, 08:14 
> Только округлять-то приходится данные после подсчетов перла, а не до (из коротких
> он делает безумно длинные, а не наоборот)
> А что касается примера на Питоне, то тут поведение схоже с Си,
> несмотря на то, что в последнем кое-какие типы данных все же
> поддерживаются

А, вон выше вы ответили: понятно теперь, что в третьем все иначе )

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

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

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




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

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