Вещественные числа и языки программирования - Компьютерные вопросы

Вопрос Вещественные числа и языки программирования

Регистрация
8 Окт 2013
Сообщения
86
Репутация
-4
Спасибо
0
Монет
0
Я боюсь пользоваться вещественными числами, т. к я узнал что не все дроби десятичной системы можно представить в двоичной.
.
Даже дробь 0.1 не имеет двоичного представления. И что тогда происходит, когда я в ЯП объявляю переменную float и присваиваю ей 0.1???
 
Регистрация
25 Ноя 2012
Сообщения
283
Репутация
1
Спасибо
1
Монет
0
Надо не бояться, а учитывать. Это часть вычислительной математики, которую программист знать обязан. Программирование - отнюдь не только знание языка программирования.
 
Регистрация
22 Дек 2012
Сообщения
79
Репутация
0
Спасибо
0
Монет
0
Присваивается значение, ПРИМЕРНО равное 0.1 - 0.10000000149 Если использовать не float (32 бита), а double (64 бита), ошибка уменьшается: 0.10000000000000000555 Раздел математики, занимающийся минимизацией ошибок вычислений, называется "вычислительная математика" и изучается в любом техническом ВУЗе.
 
Регистрация
13 Июл 2013
Сообщения
85
Репутация
0
Спасибо
0
Монет
0
0,1(10) имеет, естественно, двоичное представление как бесконечная периодическая дробь. А то, что в ЭВМ обычно двоичная запись вещественных чисел усекается в зависимости от разрядности представления и типа данных, то это вообще ерунда! Супер-точные вычисления нужны в основном только математикам для проверки некоторых определённых алгоритмов, а для большинства нужд практики вполне достаточно и точности представления 4-, 6-, 8-, 10- или максимум 16-байтных вещественных чисел.
 
Регистрация
28 Июн 2013
Сообщения
80
Репутация
1
Спасибо
0
Монет
0
Оно будет округлено. Но есть тип данных в десятичном представлении. Считать им дольше, но идеален для подсчёта денег и так далее.
 
Регистрация
26 Июл 2013
Сообщения
75
Репутация
0
Спасибо
0
Монет
0
А ты не бойся. Все равно вычисления всегда (!) производятся с некоторой конечной точностью, как правило, у чисел с плавающей точкой она даже избыточна. Просто выводи результат с нужной точностью и он округлится как надо. Избегать нужно только каких-то системных накоплений ошибок, например, если триллион раз сложить 0.1, то 100 миллиардов можно и не получить. Ну так не суммируй столько раз одинаковые числа, пользуйся умножением... >И что тогда происходит, когда я в ЯП объявляю переменную float и присваиваю ей 0.1??? По большому счету, тебя это не должно волновать. Если ты присвоил 0.1, значит, точность твоих вычислений - 1 знак после запятой. Используй форматированный вывод для вывода результата (или той же переменной) с 1 знаком после запятой и получишь верный ответ.
 
Сверху Снизу