Задача вроде простая, но есть трудность - точность вычислений при работе калькулятора. Бывают случаи, когда необходимо осуществить операцию, в которой первый операнд целого типа, а второй - вещественного и наоборот.При выполнении преобразований данных из вещественного типа в целый дробная часть либо откидывается либо округляется. Следовательно - получаем неточное значение искомой переменной после выполнения операции. Какой код нужно прописать, чтобы решить эту проблему?
Калькулятор
Калькулятор
|
30.11.2009 18:46:30
|
|
|
|
|
|
30.11.2009 19:03:34
Что-то я уже плохо соображаю, а зачем вещественное приводить к целому типу и отбрасывать дробную часть. Понятно, что из-за этого будет ошибка. А вообще, округления в delphi, да и в любом паскале плохо реализованы. Например, есть такая странная вещь.
Так, что калькулятор это программа не самая простая. Но тема хорошая, мне бы тоже очень хотелось узнать как можно повысить точность вычисления. |
|||
|
|
|
|
01.12.2009 14:02:42
Лучше все делать в вещественном типе, а не в целом. Тогда точность останется, а перевести - успеть можно всегда. |
|||
|
|
|
|
03.12.2009 14:40:30
Артём
Чтобы делать правельные округления на паскале можно использовать, например, такой код
|
|||
|
|
|
|
03.12.2009 21:48:34
Это не "плохо реализованно", это так называемое "банковское округление", когда число вида x.5 окргуляется вниз, если x - четное, и вверех - если нечетное. |
|||
|
|
|
|
13.03.2010 16:50:57
И все-таки, самое просто что можно сделать, так это складывать все в вещественных, как уже было предложено ранее. Тогда точность, по идее, должна будет быть на высоте.
|
|
|
|
|
|
13.03.2010 18:17:09
Вот кому интересно простенький калькулятор, если надо что-то сложнее, пишите =)
|
|||
|
|
|
|
13.03.2010 21:44:48
Часто проблемы с округлением могут решаться за счет установки проверки того, лежит ли некоторое число в некотором диапазоне. Иначе, логические условия могут получаться неверными из-за округления, а так получается все нормально.
Accende lumen sensibus, infude ainorem corbidus!
|
|
|
|
|
|
27.05.2010 06:51:01
Paulie, проще всего взять одинаковые типы переменных и не морочить голову с переходами из одного типа в другой. Если нужно поточнее высчитать возьмите просто тип переменной который учитывает большее количество знаков после запятой.
пока ты не доволен жизнью - она проходит...
|
|
|
|
|
|
29.05.2010 15:41:13
+1 Работать в таком случае только с вещественными типами данных, вывод округляй или форматируй как тебе требуется. |
||||
|
|
|
|||
Читают тему (гостей: 1, пользователей: 0, из них скрытых: 0)