 |
|
С# проблема с приведением типов
есть, задание
Цитата:
Дано n вещественных чисел. Определить, образуют ли они арифметическую последовательность
|
вот попытка решения
PHP код:
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 результат Последовательность не является возрастающей хотя должно быть наоборот :)
если вводить целые числа, все работает нормально, а с вещественными через раз, что поправить?
|
если заменить double на decimal, то будет работать
|
обошел эту трудность с помощь округления, а из-за чего такая проблема возникла, можно немного теории?
|
ошибка округления в double, связанная с формой представления числа в этом типе..если интересно тут например почитай
|
Время: 13:50.
© OSzone.net 2001-