Loading...
ladymira avatar ladymira 5 Точки

Data Types and Methods, problem 02 - Circle Area (Precision 12)

Здравейте!

Условието е при подаден радиус реално число да се получи лицето на кръга с точност до 12-тия знак. Моля да ме насочите къде ми е грешката, дава ми грешни отговори на 3-ти и на 4-ти тест в джъджа. Самите тестове не знам къде да ги видя, за да си открия сама грешката. С данните от условието отговорите ми са точни, но за тези 3-ти и 4-ти тест не знам какви данни се подават и защо ми дава грешка. Ето го кода ми:

http://pastebin.com/Jp82pg0Z

Тагове:
0
Programming Fundamentals
KrasimirPetkov avatar KrasimirPetkov 328 Точки
Best Answer

Проблемът идва от там, че при decimal прецизността е много по-висока, съответно при някои числа може да се получи разминаване в цифрите спрямо double.

Ето какво се получава при използване на еднакви стойности с double и decimal:

Радиус при double -  3000, лице: 28274333.882308100000

Радиус при decimal - 3000, лице: 28274333.882308110000

Кодът, който съм използвал:

using System;

class Program
{
    static void Main()
    {
        double r1 = double.Parse(Console.ReadLine());
        decimal r2 = decimal.Parse(Console.ReadLine());
        double result1 = Math.PI * r1 * r1;
        decimal result2 = (decimal)Math.PI * r2 * r2;
        Console.WriteLine("{0:f12}", result1);
        Console.WriteLine("{0:f12}", result2);
    }
}

 

 

3
19/05/2016 15:49:15
ladymira avatar ladymira 5 Точки

Благодаря, колега. Точно това се чудех и аз, след като decimal е с по-галям обхват, защо с doublе работи, а с decimal не ще да работи. Явно 3-тия и 4-тия тест са с някакви такива по-големи стойности от порядъка на хиляди, и оттам идва разминаването.

Благодаря на всички още веднъж. Поздрави!

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.