Re: Проблема с вычислениями
От: _d_m_  
Дата: 26.12.06 04:02
Оценка:
Здравствуйте, fightcat, Вы писали:

F>Здравствуйте!

F>Только начал заниматься .NET и сразу столкнулся с проблемой:

F>Следующая программа



F>
F>using System;
F>using System.Collections.Generic;
F>using System.Text;


F>namespace test1
F>{
F>    public class Class1
F>    {
F>        public static void Main(){
F>            double x1, x2, step;
F>            x1 = 1 ;
F>            x2 = 10;
F>            step = 0.1;

F>            while(x1<=x2) {
F>                x1 += step;
F>                Console.WriteLine("{0}", x1);
F>            }


F>            return;
F>        }
F>    }
F>}
F>


F>выводит ожидаемые значения до 6,1, а потом начинает выдавать 6,1999999, 6,299999 и так далее.


F>Совершенно не понимаю, из-за чего это может происходить


Проблема в том, что круглые числа в двоичной системе исчисления и в десятичной — разные. Это касается как мантиссы, так и экспоненты. Вот и приходится округлять компилятору до наиболее ближайшего подходящего числа твое 1*10^-1.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.