Округленческое
Dec. 12th, 2014 03:58 pmВступление для широкого круга читателей: Вещественные числа в ЭВМ хранятся с ограниченной точностью, поэтому после выполнения операций с ними делается округление. При выполнении двух взаимоисключающих операций, требующих округления — например, деления на произвольное число, отличное от степени двойки, и умножения на него же — результат далеко не всегда оказывается равен исходному числу. Этот пост посвящен вопросу, с какой частотой результат оказывается меньше, равен и больше исходного числа.
Посчитайте, сколько раз результат деления единицы на нечетное число (например, в диапазоне от 3 до миллиона) и последующего умножения на него же оказывается меньше единицы, равен, или больше, в зависимости от типа данных, используемого для хранения промежуточных значений. Объясните полученные результаты.
Посчитайте, сколько раз результат деления единицы на нечетное число (например, в диапазоне от 3 до миллиона) и последующего умножения на него же оказывается меньше единицы, равен, или больше, в зависимости от типа данных, используемого для хранения промежуточных значений. Объясните полученные результаты.
no subject
Date: 2014-12-13 01:10 am (UTC)Для всех четырех режимов округления.
no subject
Date: 2014-12-13 01:36 am (UTC)no subject
Date: 2014-12-13 01:43 am (UTC)no subject
Date: 2014-12-13 01:54 am (UTC)2. Ошибки в компиляторе - особь статья.
3. Я специально сказал, что на что нужно делить, чтобы избежать проблем с денормализованными числами.
no subject
Date: 2014-12-13 04:39 am (UTC)no subject
Date: 2014-12-13 04:47 am (UTC)no subject
Date: 2014-12-13 04:52 am (UTC)no subject
Date: 2014-12-13 04:57 am (UTC)no subject
Date: 2014-12-13 05:22 am (UTC)Вот исходник: https://code.google.com/p/vak-opensource/source/browse/trunk/languages/c-language/rounding.c
no subject
Date: 2014-12-13 05:45 am (UTC)no subject
Date: 2014-12-13 06:12 am (UTC)no subject
Date: 2014-12-13 06:29 am (UTC)no subject
Date: 2014-12-13 06:33 am (UTC)