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

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