Округление до ближайшего числа, оканчивающегося на 9 - PullRequest
0 голосов
/ 11 июня 2018

У меня есть сайт, который рассчитывает стоимость билетов на автобус.В настоящее время цена округляется до ближайших 10, но теперь я хочу, чтобы рассчитанная цена была округлена до ближайшего числа, заканчивающегося на 9.

РЕДАКТИРОВАТЬ: Добавлены новые примеры, отвечающие на вопрос из комментариев.

Примеры:

  • 770 до 774 следует округлить до 769
  • 775 до 784 следует округлить до 779
  • 785 до 790 следуетокруглить до 789

У кого-нибудь есть какие-либо советы о том, как я могу решить мою проблему с помощью c #?

Ответы [ 4 ]

0 голосов
/ 11 июня 2018

Следующая функция выполнит эту работу.

public static int RoundTo9(double value) 
{
    return (int)(value/10.0  + 0.5) * 10 - 1;
}
0 голосов
/ 11 июня 2018

Округление до ближайшей 10 и затем вычитание 1.

В c # вы можете сделать это следующим образом:

double val = 444.3;

double step1 = val/10;                 // 44.43
double step2 = Math.Round(step1, MidpointRounding.AwayFromZero); // 44
int step3 = (int)step2 * 10;           // 440
int rndVal = step3 - 1;                // rndVal == 439

или самую короткую версию:

double val = 444.3;
int rndVal = (int)(Math.Round(val/10, MidpointRounding.AwayFromZero)*10)-1;
0 голосов
/ 11 июня 2018
int number=65;
       // Console.WriteLine(number);
        int lastNumber=number%10;
        //Console.WriteLine(lastNumber);
        if(lastNumber<5)
        {
            number-=lastNumber;
            number--;
            Console.WriteLine(number);
        }
        else
        {
            var addNumber=10-lastNumber;
            number+=addNumber;
            number--;
            Console.WriteLine(number);
        }
0 голосов
/ 11 июня 2018

Добавить 1, округлить до ближайшего 10, а затем вычесть 1.

...