Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 13.01.2016
Сообщений: 9

Расчет суммы. Точность вычисления с типом данных double

29.09.2016, 15:51. Показов 1210. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, объясните пожалуйста почему при расчете суммы в зависимости от порядка сложения получаются разные результаты?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
namespace summa
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        double s1 = 0;
        double s2 = 0;
 
        private void Form1_Load(object sender, EventArgs e)
        {
            for (double i = 1; i <= 100000; i++)
            {
                s1 += 1 / (i * i);   
            }
            for (double i = 1000000; i >= 1; i--)
            {
                s2 += 1 / (i * i);
            }
        }
        private void button1_Click(object sender, EventArgs e)
        {
            label1.Text = "S1= " + s1;
            label2.Text = "S2= " + s2;
        }
 
        
    }
}
S1= 1.64492406689024
S2= 1.64493306684873
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.09.2016, 15:51
Ответы с готовыми решениями:

Double - Куда девается точность?
Здравствуйте, встретился с такой проблемой. У пишу рулетку, Бюджет 2$, когда делаю ставку по 0,10$ то с бюджета вычитается, но когда...

Точность вычисления переменной double
Здравствуйте, В довольно навороченном приложении такие определения class Class01 { public double par1; public double par2; }...

Точность вычислений при работе с типом float
Нубский вопрос... Почему 0.02*5 = 0.09999999? Что вообще не так с float?

8
160 / 148 / 92
Регистрация: 30.03.2011
Сообщений: 569
29.09.2016, 15:56
Потому что 100000 не равно 1000000
1
0 / 0 / 0
Регистрация: 13.01.2016
Сообщений: 9
29.09.2016, 16:08  [ТС]
Извиняюсь ошибся, но результаты все равно разные:
S1= 1.64493306684877
S2= 1.64493306684873
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
29.09.2016, 16:15
Duff_Beer,
Точность типа double ограничена 15-16 знаками. Это - накопленная погрешность.
1
0 / 0 / 0
Регистрация: 13.01.2016
Сообщений: 9
29.09.2016, 16:19  [ТС]
Я немного из деревни, но почему в 2ом случае накопленная погрешность больше?
0
1498 / 1213 / 821
Регистрация: 29.02.2016
Сообщений: 3,630
29.09.2016, 16:33
если double заменить на decimal
s1 = 1.6449330668487264363057484935,
s2 = 1.6449330668487264363057484935
1
0 / 0 / 0
Регистрация: 13.01.2016
Сообщений: 9
29.09.2016, 16:37  [ТС]
Спасибо, но суть этой задачи объяснить подробно почему получаются разные числа при типе данных double
0
 Аватар для Sanya_sa
912 / 816 / 333
Регистрация: 03.02.2015
Сообщений: 5,276
Записей в блоге: 9
29.09.2016, 16:43
Цитата Сообщение от Duff_Beer Посмотреть сообщение
Спасибо, но суть этой задачи объяснить подробно почему получаются разные числа при типе данных double
Да мне тоже интересно. Как то задавался данным вопросом - прочел много материала о представлении числа, его мантиссу и пт. но толком так никто и не дал ответа, почему так. что за механизм представления чисел который ведет к этому.В итоге забил. Может конечно я не до понимаю).
К стати столкнулся с этими "разными" значениями, когда с геокоординатами работал. Прикольно так - знаешь что a * b = c * d, а вот если a * b = e; c * d = e1, то e и e1 имеют разные значения.
1
1498 / 1213 / 821
Регистрация: 29.02.2016
Сообщений: 3,630
29.09.2016, 17:10
What Every Computer Scientist Should Know About Floating-Point Arithmetic
http://docs.oracle.com/cd/E199... dberg.html
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.09.2016, 17:10
Помогаю со студенческими работами здесь

Точность double
Возник вопрос: если перемножить числа типов double и обрезать знаки после точки с помощью f2 допустим, какая примерно погрешность будет?

точность double
Всем доброго времени суток! Недавно начал изучать С#, при решении простой задачи: найти сумму 1/0!+1/1!+...+1/n! возникает проблема...

Точность в double
Добрый день Мне задали сделать проект в универе - Калькулятор с великой точностю. Я уже почти его сделал, но у меня возникла...

Точность вычислений у double
Дана задача: &quot;Определить, на сколько нулей заканчивается факториал числа n&quot;. Пример: вводим &quot;25&quot;, на выходе должны получить...

Точность.Тип double
Вопрос такой. Пишу программу, в которой имеется цикл: double t=0, dt = 0.000001; t = t + dt; cout &lt;&lt; &quot;t --&gt;...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru