незванный гость писал(а):
:evil:
Artem_ писал(а):
Ведь в какой бы форме мы не подставляли бы коэффициенты при расчете они все равно интерпретатором (системы программирования или системы компьютерной математики) в конечном итоге преобразуются в форму с плавающей запятой, разве нет?
Если говорить о представления данных в компьютере, то разница существует, причем на нескольких уровнях.
-- точное число, в то время как
уже будет представлено приближенно. Кроме того, на уровне команд / интерпертатора это могут быть очень разные операции. Ошибки же округления могут вести к уменьшению шага интегрирования, что, в свою очередь, к замедлению.
На самом деле, ситуация действительно странная: у MatLAB по умолчанию все числа имеют тип double, т.е., по идее, дополнительная операция деления должна замедлять работу. Я сейчас попробовал на своем компьютере два простеньких примера:
Код:
tic, for i=1:1e5 a=i*0.2;end, toc
и
Код:
tic, for i=1:1e5 a=i*(1/5);end, toc
В первом случае устойчиво получается быстрее примерно в 1.3 раза, а вот
Artem_ говорит, что у него с дробями быстрее, причем гораздо, и в стандартном MatLAB-файле дроби, не думаю, что тут разработчики прошляпили. В общем, действительно странно.