Най-задълбочената програма по софтуерно инженерство в България
Loading...
+ Нов въпрос
Y.Yordanov21 avatar Y.Yordanov21 51 Точки

06. Charity Campaign Проблем пресмятането на 1/8 от крайната сума

Здравейте,

имам проблем при пресмятането на 1/8 от крайната сума в условието на задачата в задача 06.Charity Campaign  от Simple Operations and Calculations-Exercise. Като дам да пресметне 1/8 от сумата ми дава, че е равно на 0. Ако напиша 0,125 от сумата се получава

Насоки как да го пресметна правилно с 1/8 и защо се получава така?

0
Programming Basics 16/03/2019 23:43:05
Iv_Konov avatar Iv_Konov 385 Точки
Best Answer

Добро утро,

 

Вероятно променливите във формулата са ти цели числа (int), а търсиш дробен резултат (double).

 

Пример:


            int а = 1;

            double result = а * 1 / 8;

            Console.WriteLine($"{result:f2}");

 

В този случай трябва да укажеш дробно смятане на някое от целите числа (в противен случай се смята като за цели числа и се изрязва всичко след запетайката - странна логика, но ще свикнеш - дори е гъвкавост на C# и ще ти помага в някои случаи):


            int а = 1;

            double result = а * 1.0 / 8;

            Console.WriteLine($"{result:f2}");

 

или ако нямаш числа във формулата:


            int а = 1;

            double result = (double)а * 1 / 8;

            Console.WriteLine($"{result:f2}");

 

Поздрави,

Иван

 

1
17/03/2019 07:35:26
Y.Yordanov21 avatar Y.Yordanov21 51 Точки

Mерси. За да е double  резултата, трябва едно от числата в деленето да е double, иначе го закръгля на цяло число,а в случая е 1/8=0,125 а то го закръгля на 0. 

0
nikolaydong avatar nikolaydong 2 Точки

Извинявам се, че ползвам темата на колегата, но аз имам същия проблем при PHP, но за да не създавам нова тема, реших да пиша тук. В случай, че знаеш как да се получи, би ли ми помогнал? (https://softuni.bg/trainings/resources/officedocument/38700/exercise-problem-descriptions-programming-basics-with-php-march-2019/2300) Номер 6 задача.

0
Y.Yordanov21 avatar Y.Yordanov21 51 Точки

За С#. Вместо да се дели на 1/8, трябва да се дели 1.0/8 , за дасе получи doube резултат. Впротивен случай резултата се закръгля на цяло число ( в случая 0). За PHP проблвма сиг е подебен.

 

0
ivanov84ivan avatar ivanov84ivan 2 Точки

направи го по следния начин:

раздели резултата на 8, т.е "/8" и после го умножи по 7, т.е. "*7" и се получава.

0
nikolaydong avatar nikolaydong 2 Точки

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

0