Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 12.02.2011
Сообщений: 13

Занимательная арифметика

26.07.2012, 18:03. Показов 1012. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C++
1
2
3
4
double g, f, x;
g = 0.01;
f = 47.11;
x = f - g*4711;
Компилятор C++ Builder 6 выдает ответ -1.54737334057131E-15;
Помогите пожалуйста;
Жалко терять уже время;
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.07.2012, 18:03
Ответы с готовыми решениями:

Арифметика в C
Дано натуральное число n. Проверить содержит ли оно три одинаковые цифры. Например 12322. Содержит. Помогите плиз...:(

Арифметика!
Дано натуральное число n. Вычислить: (1+1/1*1)+(1+1/2*2)+(1+1/3*3)+...+(1+1/n*n) Скажу всем спасибо!

Арифметика
Даны x,y,z. Вычислить a,b если <a target="_blank"...

9
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
26.07.2012, 18:09
А в чём проблема? 10^(-15) - почти 0.
0
187 / 180 / 25
Регистрация: 27.01.2012
Сообщений: 1,335
26.07.2012, 18:13
mazaltz, Somebody прав. Никогда не слышал о том, что дробные числа лучше не сравнивать таким образом :
C++
1
2
double a = 1.0, b = 1.0;
if (a==b) // есть шанс, что не равны, даже если сделаем перед этим a=b;
нужно делать так:
C++
1
if (fabs(a-b) < E) // где E - точность
По этому причине как раз и накапливаются ошибки при дробной арифметике. Всё дело в машинном нуле
1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,707
Записей в блоге: 14
26.07.2012, 19:26
Правильное сравнение чисел с плавающей точкой:

C++
1
2
  if (fabs(a-b) <= 1.0E-15) // для double
    ....
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
27.07.2012, 11:01
Цитата Сообщение от mazaltz Посмотреть сообщение
Компилятор C++ Builder 6 выдает ответ -1.54737334057131E-15;
Помогите пожалуйста;
Жалко терять уже время;
Это не компилятор, а процессор, проблема в эпсилоне.
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
27.07.2012, 12:59
mazaltz, ты с толкнулся с проблемой машинного представления числа, поясню для нашей железяки которой является ЭВМ глубоко побарабану различие между числами ниже 15 степени т.е для неё хоть 4711 + 1e-15 хоть 4711 - 1e-15 одно и тоже, вот поэтому такой казус и получился. Могли вычитаться скажем (47.11 + 1e-15) и (47.11 - 1e-15) вот как раз почти 2е-15 и вылезло. Проблема знамая и для её решения идут на некоторые ухищрения при сравнении чисел с плавающей точкой - отдельно сравнивают целые части и дробные, либо как было показано выше находят модуль разности 2-х чисел и сравнивают его с малым которое определяет точность расчёта.
Также следует отметить, что машинное представление зачастую зависит от типа компилятора, думаю более старые компиляторы имели худшие в плане погрешности так сказать "пределы" для вещественных чисел.
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
27.07.2012, 13:04
Ниже наглядный пример для компилятора VisualStudio 6.0 (прошу обратить внимание на 47,11 в машинном представлении - как раз то о чём говорил выше)
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
 
int main()
{
    double g, f, x;
    g = 0.01;
    f = 47.11;
    x = f - g*4711;
    printf("g = %.15f\n",g);
    printf("f = %.15f\n",f);
    printf("x = %.15f\n",x);
    getchar();
    return 0;
}
Изображения
 
0
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
27.07.2012, 13:21
https://www.cyberforum.ru/blogs/18334/blog88.html
1
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
27.07.2012, 14:17
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Также следует отметить, что машинное представление зачастую зависит от типа компилятора, думаю более старые компиляторы имели худшие в плане погрешности так сказать "пределы" для вещественных чисел.
float аппаратный.
0
0 / 0 / 0
Регистрация: 12.02.2011
Сообщений: 13
27.07.2012, 18:02  [ТС]
Всем большое спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.07.2012, 18:02
Помогаю со студенческими работами здесь

Целочисленная арифметика
Помогите пожалуйста в задаче: Найти количество натуральных двузначных чисел, каждое из которых делится на 3 и на 13. Найти те натуральные...

Длинная арифметика
http://www.acmp.ru/index.asp?main=task&amp;id_task=103 Как решить эту задачу? С помощью чего, и в чем смысл решения длянной...

Длинная арифметика
Ребята,объясните как решить задачу , напишите хоть часть кода. Пусть даны числа a , b . Найти a+b, если a и b не больше чем 10 в...

длнная арифметика
привет ,помогите создать класс длинная арифметика чез строки на си ,плиз...

Адресная арифметика
Почему не работает данная программа? По идее после применения постфиксного инкремента у меня в указателе в конце p должен храниться адрес...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru