Форум: "Потрепаться";
Текущий архив: 2004.11.07;
Скачать: [xml.tar.bz2];
ВнизКалькулятор Найти похожие ветки
← →
Mihey_temporary © (2004-08-16 20:17) [560]2 nikkie:
Согласен, степень хромает всё же слишком.
← →
Mihey_temporary © (2004-08-16 20:40) [561]2 nikkie © (16.08.04 19:05) [559]:
А ведь всё равно те примеры не считает даже Windows"овский калькулятор. Поэтому ошибки следует отнести в глюки проверки, о чём я предупреждал Mihey_temporary © (16.08.04 18:47) [556].
← →
Mihey_temporary © (2004-08-16 20:45) [562]Версия без длинной арифметики.
http://www.hot.ee/gelphi/ExpCalcShort.zip [250 Kb]
← →
Mihey_temporary © (2004-08-16 22:28) [563]Надеюсь, завтра утром будут результаты тестирования от Юрия Зотова.
← →
Думкин © (2004-08-17 06:16) [564]> [562] Mihey_temporary © (16.08.04 20:45)
1. 3-3.01 = -0.009999999999999999. Но 3+3.01 = 6.01
← →
VMcL © (2004-08-17 10:18) [565]>>Mihey_temporary © (16.08.04 22:28) [563]
Все калькуляторописатели (без ста грамм такое слово и не напишешь, блин) и так Юрию Зотову уже много ящиков пива должны за работу в качестве VVE.
← →
Anatoly Podgoretsky © (2004-08-17 11:10) [566]Думкин © (17.08.04 06:16) [564]
Это нормально, обычная проблема относительной точности
← →
Anatoly Podgoretsky © (2004-08-17 11:15) [567]Единственно, что калькуляторы должни использовать числа с фиксированой запятой, а не плавающей.
← →
Думкин © (2004-08-17 11:31) [568]> [566] Anatoly Podgoretsky © (17.08.04 11:10)
Я понимаю, только был как-то вопрос от автора по поводу таких выражений 4.9999999 - куда его девать. Поэтому ожидал иного.
← →
Anatoly Podgoretsky © (2004-08-17 11:38) [569]Ожидал взаимности
← →
Юрий Зотов © (2004-08-17 11:54) [570]> VMcL © (17.08.04 10:18) [565]
Ящик я не выпью, слабо. Но и не откажусь - "позову я друзей, не сочтите, что это в бреду..."
:о)
P.S.
Э-э-э... сорри за неграмотность... а что такое VVE? Надеюсь, не ругательство какое-нибудь?
:о)
← →
VMcL © (2004-08-17 12:28) [571]>>Юрий Зотов © (17.08.04 11:54) [570]
>а что такое VVE? Надеюсь, не ругательство какое-нибудь?
Ага. Трехтажный мат (если не считать слово `and`): что-то типа "Validation and Verification Engineer", то есть "тестер" в простонародии :-)
← →
Mihey_temporary © (2004-08-17 14:38) [572]
> Думкин © (17.08.04 06:16) [564]
Версия с длинной арифметикой без проблем считает этот пример.
← →
Mihey_temporary © (2004-08-19 00:01) [573]Я так полагаю, что на калькуляторы забили и все остались при своих мнениях. Тоже верно, тема уже достала. Тем не менее своего мнения я не сменил. По-прежнему считаю, что можно написать калькулятор выражений без знания теории. Более того, хочу заметить, что написать парсер выражений довольно легко. Правильный был дан совет мне в этой ветке - сначала подумай, потом берись за написание. При тщательном подходе всё встаёт на свои места.
Итак, без теории программируется дольше.
Гораздо больше проблем возникло со счётом. Средства Delphi дают слишком малую точность, а хотелось как в калькуляторе Windows. И опять без теории, была написана калькулирующая, которая использует строки для хранения чисел.
Это оказалось возможно, но не рационально. Например, пример выражения от nikkie, результата которого он не дожался. Действительно, число сначала возводилось в 3333...333-ю степень, а потом из него извлекался корень 1000000...000-ой степени. Матетически всё правильно, но вот результата нет. Наверное, лет через десять компьютеры достигнут достаточной мощности, чтобы посчитать это число.
Итак, без теории программы работаю медленнее.
И всё же - это можно было обойти, углубившись в дебри математики. Вся эта сложная теория элементарно реализуется от простого к сложному (например, с помощью моего калькулятора вы можете вычислить значение синуса с точностью до 200 и более знаков, достаточно нажать Ctrl+T и ввести соответсвующую точность - это я к тому, что реализовав действия я реализовал более сложное).
В общем, я хочу сказать, что возможно всё.
Исходники, взгляните, как всё просто и примитивно:
http://www.hot.ee/gelphi/Calculator2.rar [100 Kb]
← →
Sergey_Masloff (2004-08-19 00:24) [574]Mihey_temporary © (19.08.04 00:01) [573]
Молодец что не сдаешься!
← →
nikkie © (2004-08-19 13:24) [575]эта, какую версию-то тестировать?
вроде сошлись на стандартной недлинной арифметике.
а где сорсы?
те сорсы, которые выложены (с длинной арифметикой) не работают:
выражение: 2^(-3.1)
результат: "-" is not a valid integer number
← →
Kerk © (2004-08-19 13:27) [576]Не надоело еще? :)
← →
Anatoly Podgoretsky © (2004-08-19 13:35) [577]Давно в анекдот превратилось
← →
nikkie © (2004-08-19 13:38) [578]Действительно, число сначала возводилось в 3333...333-ю степень, а потом из него извлекался корень 1000000...000-ой степени. Матетически всё правильно, но вот результата нет. Наверное, лет через десять компьютеры достигнут достаточной мощности, чтобы посчитать это число.
ты малость оптимист :))
27^333...333 (43 цифры) > 10^(10^42)
чтобы такое число в десятичном виде хранить, надо 10^42 байт памяти иметь. т.е. 10^39 килобайт = 10^36 мегабайт = 10^33 гигабайт = 10^30 терабайт. через 10 лет? вряд ли хранить, не то, чтобы считать...
Итак, без теории программы работаю медленнее.
в виду вышеприведенных выкладок мне кажется, что это скорее "не работает", чем "работает медленно".
← →
Anatoly Podgoretsky © (2004-08-19 13:40) [579]Ну что бы хранить 10^42 нужно от 21 до 42 байт всего (BCD) плюс один на знак
← →
nikkie © (2004-08-19 13:44) [580]кстати, в коде программы я вижу такие сообщения:
Произошла внутренняя ошибка в программе!
Входное выражение записано в файл Error.log.
Ошибка в программе, код 001
<...>
Ошибка с кодом 002
Внутренняя ошибка с кодом [03]!
я полагаю, что если эти сообщения показываются, значит парсер/калькулятор не работает. согласен?
← →
nikkie © (2004-08-19 13:45) [581]>[579] Anatoly Podgoretsky
не 10^42, а 10^(10^42).
← →
Думкин © (2004-08-19 13:45) [582]
> [579] Anatoly Podgoretsky © (19.08.04 13:40)
> 10^(10^42)
← →
Anatoly Podgoretsky © (2004-08-19 13:56) [583]nikkie © (19.08.04 13:45) [581]
Аааааааааааа
← →
Sandman25 © (2004-08-19 14:25) [584]По поводу 10^(10^42) сейчас перечитываю "Занимательную алгебру", так там написано, что число всех электронов Вселенной ничтожно по сравнению с 9^(9^9).
Хотя если перейти к новому формату данных (мантисса * 10 в степени (10 в степени экспонента), то понадобится действительно меньше 100 байт).
← →
Думкин © (2004-08-19 14:32) [585]> [584] Sandman25 © (19.08.04 14:25)
Но точность какая будет?
← →
Mihey_temporary © (2004-08-19 17:07) [586]>кстати, в коде программы я вижу такие сообщения:
Произошла внутренняя ошибка в программе!
Входное выражение записано в файл Error.log.
Ошибка в программе, код 001
<...>
Ошибка с кодом 002
Внутренняя ошибка с кодом [03]!
я полагаю, что если эти сообщения показываются, значит парсер/калькулятор не работает. согласен?
Да, если эти сообщения показываются, значит не работает.
← →
Sandman25 © (2004-08-19 17:23) [587]>Но точность какая будет?
Какая сейчас максимальная длина мантиссы при реальных измерениях? 20, 30, 50?
← →
nikkie © (2004-08-19 17:27) [588]>Да, если эти сообщения показываются, значит не работает.
ну хорошо. тогда начнем:
выражение: 1^^2
результат: Ошибка с кодом 002
выражение: 1^*2
результат: Ошибка с кодом 002
← →
Anatoly Podgoretsky © (2004-08-19 17:36) [589]Mihey_temporary © (19.08.04 17:07) [586]
Я не смотрел твой калькулятор, но Микрософтовский ошибки выводит в дисплей. И при этом говорящии. Это хорошее свойство для калькуляторов.
\Офтопик
Тут http://delphimaster.net/view/14-1092911681/ на стоимоть мобилных переговоров в Эстонии интересуются, а мне кажется у тебя есть мобильник.
← →
Mihey_temporary © (2004-08-19 18:08) [590]2 nikkie © (19.08.04 17:27) [588]:
Это всё замечательно. Но скажи мне, каково значение выражения 1^^2????
← →
nikkie © (2004-08-19 19:12) [591]это некорректное выражение. но программа вместо того, чтобы сообщить, что выражение некорректно, валится с неожиданной ошибкой, честно сообщая об этом пользователю. ты вроде согласился, что такого быть не должно. я бы предпочел, чтобы сообщение не отличалось от
выражение: 1++2
результат: Ошибка со знаками действий или разделителями! Проверьте правильность выражения!
← →
Mihey_temporary © (2004-08-19 19:42) [592]Да, согласен, я упустил возможность двух степеней. По идее должна выводится ошибка о двух действиях подряд.
Но меня больше интересует некоторое правильное выражение вида (-1+0.22/(-3))+((5*4(-2)^(-(+(-1-1-(-1)))))-3) на котором программа крякнется. Но пока такого нету :( а лучше :)
← →
Думкин © (2004-08-19 20:55) [593]> [587] Sandman25 © (19.08.04 17:23)
1. Ну по обсуждаемому предполагалось что все знаки будут значимыми.
2. Запиши в этом виде число 1.
← →
Sandman25 © (2004-08-20 09:08) [594][593] Думкин © (19.08.04 20:55)
1. В современных системах длина мантиссы не слишком велика.
2. 1*10^(10^(-INF)).
← →
Думкин © (2004-08-20 09:11) [595]> [594] Sandman25 © (20.08.04 09:08)
1. Я понимаю, но речь была длинной арифметике
2. А 10^-30 ? Можно несколько поправить формат конечно.
← →
Sandman25 © (2004-08-20 09:29) [596]1. Длинная арифметика тоже имеет ограничения.
2. Не понял. При чем тут +0?
← →
Думкин © (2004-08-20 09:34) [597]> [596] Sandman25 © (20.08.04 09:29)
> 2. Не понял. При чем тут +0?
Я тоже не понял. Какой +0?
← →
Sandman25 © (2004-08-20 09:38) [598]Ответь, при чем тут 10^-30. Тогда мне не придется объяснять, при чем тут +0
← →
Думкин © (2004-08-20 09:40) [599]Ну...
a*(10^(10^b))
как записать 10^-30, 10^-300.
ведь 10^(10^b)>1 для действительных b.
← →
Sandman25 © (2004-08-20 09:44) [600]?a*(?10^(?10^?b)
где ? - знак (+ или -)
Страницы: 1 2 3 4 5 6 7 8 9
10 11 12 13 14 15 16 17 18
19 вся ветка
Форум: "Потрепаться";
Текущий архив: 2004.11.07;
Скачать: [xml.tar.bz2];
Память: 1.6 MB
Время: 0.259 c