Loading...

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

AneliyaS avatar AneliyaS 1 Точки

Проблем с домашно 10. Birthday

Здравейте!

Имам проблем с кода по-долу. Опитвам се да получа обема в литри директно (без първо да смятам в см3 и после да превърщам в литри), но ми дава грешен резултат 248.170. Знам, че верният резултат е 248.689 и той се получава, ако разпиша формулата отделно (т.е. първо умножа трите страни, за да получа обема в см3 и на следващ ред разделя този обезм на 1000, за да го получа в литри). Въпросът ми е защо, когато се опитвам да направя всичко в една формула, ми дава грешен резултат.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Birthday
{
    class Program
    {
        static void Main(string[] args)
        {
           
            int lenght = int.Parse(Console.ReadLine());           
            int width = int.Parse(Console.ReadLine());
            int height = int.Parse(Console.ReadLine());
            double percent = double.Parse(Console.ReadLine());
     
            double volumeInLiters = lenght * width * height / 1000;
            double noNeededPercent = percent * 0.01;
            double finalResult = volumeInLiters*(1 - noNeededPercent);

            Console.WriteLine($"{finalResult:F3}");
        }
    }
}

---------------------------------------------------------------------------------------------------------

Резултат:

85
75
47
17
248.170
Press any key to continue . . .
 

Тагове:
0
Programming Basics with C#
kolioi avatar kolioi 641 Точки
Best Answer

Гледам, че все още никой не ти е отговорил вярно, макар че колегите са опитали. Проблемът е при изчисляването на volumeInLiters. Произведението е цяло число, 1000 също е цяло и имаме целочислено деление при което се получава целочислен резултат, т.е. губи се дробната част на резултата. Това се оправя като направиш поне едно от числата в израза double, например така

double volumeInLiters = lenght * width * height / 1000.0;

или умножаваш по 0.001 (вместо да делиш на 1000), което е същото.

0
AneliyaS avatar AneliyaS 1 Точки

Благодаря за отговора! :)

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