C/C++ - [решено] С# проблема с приведением типов

Ответить
Аватара пользователя
Hector

C/C++ - [решено] С# проблема с приведением типов

Сообщение Hector »

есть, задание
Цитата:



Дано n вещественных чисел. Определить, образуют ли они арифметическую последовательность



вот попытка решения

Код: Выделить всё

using System;
using System.Collections.Generic;
using System.Text;

namespace lab3_v21
{
    class Program
    {
        static void Main()
        {
            Console.Write("Количество цифр ");
            int n = Convert.ToInt16(Console.ReadLine());
            double[] line=new double[n];
            int i=0;
            for (i = 0; i < n; i++)
            {
                Console.Write("{0}-я цифра ",i+1);
                line[i] = Convert.ToDouble(Console.ReadLine());
            }
            bool flag = false;
            double razn = line[1] - line[0]; // находим разность между членами ряда, для последующего сравнения
            for (i = 0; i < n-1; i++)
            {
                if (line[i + 1] - line[i] !=razn)
                {
                    Console.WriteLine("Последовательность не является возрастающей");
                    flag = true;
                    break;
                }
            }
            if (!flag)
            Console.WriteLine("Последовательность возрастающая");

            Console.ReadLine();
        }
    }
}


проблема в том, при вводе цифр 0,1 - 1 - 1,9 результат Последовательность не является возрастающей хотя должно быть наоборот Изображение

если вводить целые числа, все работает нормально, а с вещественными через раз, что поправить?
Аватара пользователя
ferget

Re: C/C++ - [решено] С# проблема с приведением типов

Сообщение ferget »

если заменить double на decimal, то будет работать
Аватара пользователя
Hector

Re: C/C++ - [решено] С# проблема с приведением типов

Сообщение Hector »

обошел эту трудность с помощь округления, а из-за чего такая проблема возникла, можно немного теории?
Аватара пользователя
SeRgikON

Re: C/C++ - [решено] С# проблема с приведением типов

Сообщение SeRgikON »

ошибка округления в double, связанная с формой представления числа в этом типе..если интересно
тут
например почитай
Ответить

Вернуться в «Программирование и базы данных»