Форум: "Основная";
Текущий архив: 2004.11.21;
Скачать: [xml.tar.bz2];
ВнизМат, округлние Найти похожие ветки
← →
Defunct © (2004-10-29 00:53) [40]GuAV © (29.10.04 00:35) [38]
Извините, но вы показываете свое неумение слушать.
X:=212432313.4998567925;
Конкретно в этом числе порядок наименьшего значащей цифры (5) = 10(-10). Соответственно E = 10(-11).
Все упирается в точность.
Опять же
Z:=212432313499856792.5;
при E=0.01 округлит верно.
для полноты картины надо бы добавить еще и
Y = 3212432313499856792.5;
В общем если вы пытаетесь показать ограниченность мантиссы, так с этим никто не спорит.
← →
GuAV © (2004-10-29 01:02) [41]Ну так, я и говорю, что Вы не можете написать E для кода где входные данные заранее неизвестны, поэтому при использовании Вашей функции нужно учитывать эти ограничения.
Это ни как не увязывается с
> "Программист! ДЕЛАЙ ВСЕ ПРОЩЕ".
← →
Defunct © (2004-10-29 01:02) [42]Verg © (29.10.04 00:41) [39]
> Можете еще с excel-ом поиграться.
Не, там жлобское округление.
если кредит (отрицательные числа) забирать больше.
если долг - отдавать меньше ;)
Есть еще бухгалтерское округление - обрезать до целого
(чтобы не платить лишнего) ;>
> Образует какое-то "альтернативное" понятие математического округления :))
Как в советской школе учили. округлять к большему. ;>
в яндексе правило округления отрицательных чисел должно быть. Там оно как в советской школе - к большему.
← →
Defunct © (2004-10-29 01:13) [43]GuAV © (29.10.04 01:02) [41]
Понимаете, особой разницы нет на каком знаке произойдет сбой
или на числе 212432313499856792.5 или на числе 32124323134998536792.5 (на нем уже все функции неправильно округляют). Если просто работать с обычными числами (не гигантскими) тогда достаточно обойтись с помощью [12]. Eсли же работать с огромными числами (правильнее сказать с очень высокой точностью больше 50 знаков в числе), тогда ни ваша функция, ни функция Verg не помогут. Но, как правило, такая точность нигде не требуется.
← →
Verg © (2004-10-29 01:51) [44]
> Давайте применим это правило к числам около нуля.
>
Давайте
0.5 + (-0.5) = 0
Что нам даст "жлобское" округление слагаемых? 1 + (-1) = 0 - тот же 0
Так, а теперь round( x + E) -> 1 + 0 = 1
Так какое же округление на самом деле "жлобское"?
← →
GuAV © (2004-10-29 02:17) [45]Defunct © (29.10.04 1:13) [43]
32124323134998536792.5 (на нем уже все функции неправильно округляют).
:)
Точнее сказать такое число просто не может быть представленно с точностью выше целых. Т.е. .5 никуда не помещается. И функции уже ни при чём.
Defunct © (29.10.04 1:13) [43]
Eсли же работать с огромными числами (правильнее сказать с очень высокой точностью больше 50 знаков в числе), тогда ни ваша функция, ни функция Verg не помогут.
Названные функции работают при точности больше 50 двоичных знаков. О больше чем 64 знаках речь конечно идти не может - это уже действительно предел точности FPU.
← →
pasha_golub © (2004-10-29 12:17) [46]Ого, мужики развели.
Вообщем, на самом деле это вопрос тоже не мой, а друга. И он меня тоже ввел в пучину сомнений и раздумий. Потому и задал его тут. А оказалось все не так просто. Гы
← →
pasha_golub © (2004-10-29 12:20) [47]Ого, мужики развели.
Вообщем, на самом деле это вопрос тоже не мой, а друга. И он меня тоже ввел в пучину сомнений и раздумий. Потому и задал его тут. А оказалось все не так просто. Гы
← →
Romkin © (2004-10-29 12:30) [48]Все очень просто: Округляют к четному, дабы избежать дрейфа при операциях вида
1 + 0.5 - 0.5 + 0.5 - 0.5 ... Если каждый раз округлять, то "к четному" будет держать 2. А "школьное" - увеличиваться!
← →
pasha_golub © (2004-10-29 12:40) [49]Еще вопрос не по теме. Подскажите, где взять мануал по АСМу с сайта Интела, а то я как-то не нашел, видно руки...
← →
Defunct © (2004-10-29 18:43) [50]> pasha_golub © (29.10.04 12:20) [47]
> Потому и задал его тут.
Округлений просто море, потому что округление выполняет уменьшение точности, а как вы сами понимаете уменьшить точность можно как угодно. Выбирайте то, что нужно именно вам.
Мат округление, бухгалтерское, до четного, и т.п.
> pasha_golub © (29.10.04 12:40) [49]
http://search2.intel.com/corporate/default.aspx?q=Intel+IA-32+software+developers+manual+download
Там три части vol 1-3.
вторая часть "instruction set reference" в двух книгах по ~600стр. vol 2A, vol 2B
← →
pasha_golub © (2004-11-04 12:04) [51]Defunct © (29.10.04 18:43) [50]
Спасибо огромное, значит я не ошибался.
Страницы: 1 2 вся ветка
Форум: "Основная";
Текущий архив: 2004.11.21;
Скачать: [xml.tar.bz2];
Память: 0.54 MB
Время: 0.036 c