Здравствуйте, 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.