Как округлить число до другого числа, но только если оно находится в пределах 0,0001 от этого значения. бывший раунд с 5,999 до 6, но не с 5,93 до 6? - PullRequest
0 голосов
/ 15 октября 2019

Квадратный корень, вызывающий длинный десятичный знак, который не равен. например, 3.199999 не равен 3.2.

Я прошу пользователя ввести точки, чтобы увидеть, если форма треугольника. Если точки образуют треугольник ... программа определяет, какой треугольник создан. У меня проблема в том, что когда вводятся определенные точки;квадратный корень при нахождении длины стороны создает число, подобное 5.9999. Это вызывает проблемы при определении треугольника, потому что длина стороны покажет s1 = 5.9999 s2 = 5.9999 и s3 = 6. когда программа читает это, она скажет, что это равнобедренный треугольник, а скорее это должен быть эквилатерольный треугольник, но не из-за проблемы квадратного корня. Как я могу это исправить?

m = x1 - x2;
l = y1 - y2; 
j = x2 - x3; 
j2 = y2 - y3; 
w = x3 - x1; 
w2 = y3 - y1; 



if( abs((x2-x1)*(y3-y1)-(y2-y1)*(x3-x1)) == 0) 
{
    printf("Not a triangle");
}
else
{

    if(s1 == s2 && s2 == s3 && s1 == s3) 
    {
        printf("\nThis forms an equilateral triangle"); 
    }   
    else //if statement above is not true
    {
        if((s1 == s2 && s1 != s3) || (s1 == s3 && s2 != s1) || (s2 == s3 && s1 != s2)) 
        {
            printf("\nThis forms an isoceles triangle"); 
        }
        if(s1 != s2 && s2 != s3 && s1 != s3) 
        {
            printf("\nThis forms a scalene trianle"); 
        }
    }
}
    printf("\n\ns1:  %g\ns2: %g\ns3:  %g\n",s1, s2, s3);

}

Я хотел бы, чтобы вывод показывался, когда s1 = 5.49999 s2 = 5.5 s3 = 5.5, чтобы сказать, что создан равносторонний треугольник, а не изоцеле. спасибо за помощь

1 Ответ

0 голосов
/ 15 октября 2019

Просто посчитайте это: newnumber = 0.0001 * round (10000 * число)

Examples: 
number = 5.9999    =>  newnumber = 6
number = 5.93      =>  newnumber = 5.93
number = 3.199999  =>  newnumber = 3.2
number = 5.999     =>  newnumber = 5.999

Если вы хотите, чтобы последним примером было 6, используйте 1000 вместо 10000 в качестве коэффициента в формуле выше. Я не знаю ваш язык программирования, но предположим, что вы найдете правильный термин для 'round'

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...