Ну это вообще блеск!!!
С наилучшими пожеланиями ...
С наилучшими пожеланиями ...
25.01.2014 14:21:38
Ошибка возникает на 16 знаке после запятой. Откуда 16 знак? Читайте о стандарте:
Думаю, Вам будет интересно познакомиться с возможностями стандарта IEEE 754 . Особенно с разделом "заключение":
Как программист скажу, никогда не применяйте одинарную точность (single) в программах, если полностью не представляете и не контролируете всю процедуру расчета, так как результат компьютерного расчета может быть не предсказуем. Вот результат вычислений этой программы:
|
|||||
|
02.11.2012 14:21:20
Досточтимый Vikttor, неужели вы не заметили, что я вас спрашивал о логических построениях, а не об арифметических действиях...
Посмотрел ссылку, спасибо, все стало ясно, вспомнил по Суперкалк, когда-то была такая замечательная программа без косяков. Думаю, для всех посетителей орума надо внимательно с ней познакомиться. Особенно с разделом "заключение". Цитирую:Стандарт IEEE 754 широко применяется в технике и программировании. При этом хочется отметить, что в нем заложены существенные недостатки. Создается впечатление, что в разработке стандарта не принимали участие профессиональные математики. Директор института математики и ее применений в Миннеаполисе, США Дуглас Н.Арнольд утверждает, что целый ряд крупнейших аварий с человеческими жертвами и миллиардными убытками всецело обязан нынешней технологии компьютерных вычислений и представлений данных по стандарту IEEE 754. Вы можете прочитать об этом в статье IEEE754-тика угрожает человечеству Как программист скажу, никогда не применяйте одинарную точность (single) в программах, если полностью не представляете и не контролируете всю процедуру расчета, так как результат компьютерного расчета может быть не предсказуем. Вот результат вычислений этой программы: a=0.3 c=0.3 c : a = 1.00000003973643 a=0.3 c=0.3 a : c = 0.999999960263572 Здесь вы видите не только не точный результат, но и зависимость результата от расположения переменных. Это только одна операция, представьте, что операций тысячи. Результат таких вычислений будет не предсказуем. Вот ещё пример: Text1.Text = (c / a - 1) * 10000000000 Если посчитать на бумажке ответ будет = 0, а если на компьютере = 397,364299242753 Как Вы считаете- есть ли разница между 0 и 397 (допустим в ядерных бомбах!) |
|
|