Я пытаюсь научиться C#, и я был заинтересован в попытке написать простой Do-то время, чтобы вычислить квадратный корень простого числаручной квадратный корень код дает странный выход
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
double x = Convert.ToDouble(Console.ReadLine());
double root = 0;
do
{
root += 0.0001;
Console.WriteLine(root);
}
while ((root * root) % x != 0);
Console.WriteLine(Math.Sqrt(x));
Console.WriteLine(root);
}
}
}
Если я использую круглый номер для корня + = 0,0001; как корень + = 1; он отлично работает даже для ответов , но как только я начну использовать 0.1 или меньше, он разрывается, и даже игнорирует его проверку в операторе while.
Может кто-нибудь объяснить, почему это происходит? ПРИМЕЧАНИЕ. Мне не нужно решение, просто причина, почему это происходит. И я знаю, что могу использовать Math.Sqrt (значение);
Не используйте дважды, поплавок для сравнения чисел с плавающей запятой! http://csharpindepth.com/Articles/General/FloatingPoint.aspx – mybirthname
'while ((корень * корень) - x