The OpenNET Project / Index page

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



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

Оглавление

Недоработка в Python-скрипте могла привести к неверным резул..., opennews (??), 13-Окт-19, (0) [смотреть все]

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


324. "Недоработка в Python-скрипте могла привести к неверным резул..."  +1 +/
Сообщение от Аноним84701 (ok), 14-Окт-19, 19:04 
>> bc в баше и то точнее будет.
>
 
> $ bc
> bc 1.07.1

...
> 1/3
> 0

А теперь внимание: ч̶т̶е̶н̶и̶е̶ ̶м̶а̶н̶а̶ ловкость рук и никакого мошенничества:


% bc -l
1/3
.33333333333333333333

% bc <<< "scale=8000; 1/3"                                                                
.3333333333333333333333333333333333333333333333333333333333333333333\
33333333333333333333333333333333333333333333333333333333333333333333\
33333333333333333333333333333333333333333333333333333333333333333333\
...
...
33333333333333333333333333333333333333333333333333333333333333333333\
33333333333333333333333333333333333333333333333333333333333333333333\
% bc <<< "scale=8000; 1/3"|wc -c
    8236

ЗЫ: но вообще-то calc от одного ученого-астронома
http://www.isthe.com/chongo/tech/comp/calc/
удобнее:


% calc "base(1/2); 1/3 + 2/5 + 5/17"  
    10
    262/255

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

327. "Недоработка в Python-скрипте могла привести к неверным резул..."  +/
Сообщение от Anonymoustus (ok), 14-Окт-19, 19:37 
> А теперь внимание: ч̶т̶е̶н̶и̶е̶ ̶м̶а̶н̶а̶
> ловкость рук и никакого мошенничества:

Скажете тоже… Кто же из опеннетовских экспертов читает маны?

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

336. "Недоработка в Python-скрипте могла привести к неверным резул..."  –1 +/
Сообщение от Аноним (42), 15-Окт-19, 00:23 
> ловкость рук и никакого мошенничества

Как это — никакого? Утверждалось же:
> без подключения навороченных математических библиотек

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

342. "Недоработка в Python-скрипте могла привести к неверным резул..."  –1 +/
Сообщение от Адекват (ok), 15-Окт-19, 06:51 
Bc может на СИ написан, а может и нет.
Вы на чистом си напишите код и посмотрите, что будет.
А так же, если будет желание на python, perl, javascript, и даже на баше.
Ответить | Правка | Наверх | Cообщить модератору

355. "Недоработка в Python-скрипте могла привести к неверным резул..."  +1 +/
Сообщение от Michael Shigorinemail (ok), 15-Окт-19, 12:14 
> Вы на чистом си напишите код и посмотрите, что будет.

Ну я писал, помнится, длинную полиномиальную математику на голых сях для бакланаврской.  Вы этим кого вообще пугать пришли?

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

347. "Недоработка в Python-скрипте могла привести к неверным резул..."  +1 +/
Сообщение от Аноним84701 (ok), 15-Окт-19, 11:29 
>> ловкость рук и никакого мошенничества
> Как это — никакого? Утверждалось же:
>> без подключения навороченных математических библиотек

Т.е. на самом деле следовало использовать bc, не используя dc? o_O

>>>  Впрочем СИ  ... разделите 1/3 шататными средствами, без подключения навороченных математических библиотек
>>> bc в баше и то точнее будет.
>> $ bc
>> 1/3
>> 0

Или все же стоит читать целиком и в контексте, а не выдергивать отдельные, понравившиеся фразы?

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

374. "Недоработка в Python-скрипте могла привести к неверным резул..."  +/
Сообщение от Аноним (325), 15-Окт-19, 21:15 
> Т.е. на самом деле следовало использовать bc, не используя dc?

Следовало использовать bc, не используя опцию -l. Да, в это сложно поверить, но Аноним про неё знал.
> Или все же стоит читать целиком и в контексте, а не выдергивать отдельные, понравившиеся фразы?

Если целиком и в контексте, то, конечно, надо ещё упомянуть, что точность bc не зависит от того, запущен он из bash или откуда-то ещё.

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

377. "Недоработка в Python-скрипте могла привести к неверным резул..."  +/
Сообщение от Аноним84701 (ok), 15-Окт-19, 21:32 
>> Т.е. на самом деле следовало использовать bc, не используя dc?
> Следовало использовать bc, не используя опцию -l.

Хм, потому что гладиолус или потому что аноним несет Возмездие во имя Луны?

Кстати, если уж придираться к формальностям, то во втором листинге -l нема.
% bc <<< "scale=8000; 1/3"

Ну и вообще-то bc является лишь препроцессором к dc, который и является "dc is an arbitrary precision arithmetic package
% bc -c <<< "scale=8000; 1/3"  
8000k 1 3/ps.
% dc <<< "8000k 1 3/ps."                                                                  
.333333333333333333333333333333333333333
так что говорить о точности bc бессмысленно.

> Да, в это сложно поверить, но Аноним про неё знал.

Угу-угу. Только она [опция] вот тут -- нафиг не нужна. Просто там задается дефолтный scale = 20.
Изначально вам предолжили в̵ ̵л̵а̵с̵т̵а̵и̵х̵ ̵и̵ ̵п̵р̵о̵т̵и̵в̵о̵г̵а̵з̵е̵ посчитать на си стандарными средствами языка. Чем не понравился bc"Адеквату" я не знаю, но и bc и (тем более) питон для таких подсчетов "из коробки" проще, быстрее, да еще и намного точнее. И если уж аноним "знал", то тем более непонятно что должен был продемонстрировать тот пример.

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

379. "Недоработка в Python-скрипте могла привести к неверным резул..."  +/
Сообщение от Аноним (42), 16-Окт-19, 00:31 
Я не знаю, что у тебя там за bc, но у меня — GNU bc, который
> was implemented from the POSIX P1003.2/D11 draft and contains several differences and extensions  relative  to  the draft and traditional implementations.  It is not implemented in the traditional way using dc(1).  This version is a single process which parses and runs a byte code translation of the program.

Что касается опции -l:
>        -l, --mathlib
>              Define the standard math library.

что бы под этим ни подразумевалось.

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

385. "Недоработка в Python-скрипте могла привести к неверным резул..."  +/
Сообщение от Адекват (ok), 16-Окт-19, 14:44 
> посчитать на си стандарными средствами языка. Чем не понравился bc"Адеквату" я
> не знаю,

У меня была простая просьба.
Написать. На СИ. Код. Котрый. Покажет результат делания 1/3, и это будет не 0.

#include <stdio.h>

int main(int argc, char* argv[])
{
float a=1/3.0;
printf("%.20f",a);
}

Результат:

0.33333334326744079590
Вот результат для double:
0.33333333333333331483

офигенная точность, правда ?

про bc - если мне в моей проге понадобиться супер-математичесая точность, мне что, каждый раз делать system bc ?

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

386. "Недоработка в Python-скрипте могла привести к неверным резул..."  +/
Сообщение от Michael Shigorinemail (ok), 16-Окт-19, 14:52 
> про bc - если мне в моей проге понадобиться супер-математичесая точность,
> мне что, каждый раз делать system bc ?

Слушайте, даже я уже больше двадцати лет знаю про gmp, которую мне мсье Зубинский дал в руки, когда собирался писать свою реализацию деления.  Неужели быстрее ныть, чем найти или на худой конец сделать?..

PS: в смысле "когда я собирался", разумеется.

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

395. "Недоработка в Python-скрипте могла привести к неверным резул..."  +/
Сообщение от Аноним (325), 16-Окт-19, 20:45 
> если мне в моей проге понадобиться супер-математичесая точность, мне что, каждый раз делать system bc ?

Если нужна хоть какая-то точность, забудь про float и пользуй double. Если супер-пупер — бери библиотеки и не стонай. Можно подумать, питон без них на большее способен…


>>> print("%.20f" % (1.0/3))

0.33333333333333331483


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

397. "Недоработка в Python-скрипте могла привести к неверным резул..."  +1 +/
Сообщение от myhand (ok), 16-Окт-19, 20:55 
> Можно подумать, питон без них на большее способен…

Канешна, дарагой!


>>> import fractions
>>> fractions.Fraction(1, 3)

Fraction(1, 3)


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

398. "Недоработка в Python-скрипте могла привести к неверным резул..."  +/
Сообщение от Аноним84701 (ok), 16-Окт-19, 22:02 
> Можно подумать, питон без них на большее способен…

Угу. Питон же, на самом деле, исключительно из-за неосиляторства сишечки используют 🙄


>>> import decimal
>>> decimal.getcontext().prec = 100500
>>> res = decimal.Decimal(1) / decimal.Decimal(3)
>>> str(res)[:10]

'0.33333333'
>>> str(res)[100480:]

'3333333333333333333333'

% time python2.7 -c "from decimal import *; getcontext().prec=100500; print str(Decimal(1)/Decimal(3))[100400:]"  
333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333
python2.7 -c   0,90s user 0,02s system 99% cpu 0,932 total

Ох уж эти мантры опеннета.

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

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

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




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

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