Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-1099787875
Thor234
2004-11-07 03:37
2004.11.21
Панель инструментов/задач


14-1099299946
savva
2004-11-01 12:05
2004.11.21
Где можно "пробить" машину на угон?


3-1098842650
piople
2004-10-27 06:04
2004.11.21
Blop поля


1-1099560323
Ivolg
2004-11-04 12:25
2004.11.21
ListBox


4-1097479480
FireMan_Alexey
2004-10-11 11:24
2004.11.21
Свободная оперативная память!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский