0 / 0 / 0
Регистрация: 28.04.2009
Сообщений: 127
1

Разбить число на разряды

17.06.2019, 23:03. Показов 28638. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть число 5634.35
Как это число превратить в цифры 5; 6; 3; 4.35?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.06.2019, 23:03
Ответы с готовыми решениями:

Отформатировать число, разделив на разряды
Ребята, помогите пожалуйста. Поставлена такая задача. Дано число, к примеру, 123456790. В итоге...

Число uint разбить на 8 элементов по 4 бита, преобразовать каждый элемент в 16-ричное число
Не могу решить следующую задачу: Есть некоторое число uint (32-bit), его необходимо разбить на 8...

Пользователь вводит число, надо разбить число по цифрам
Пользователь вводит число, надо разбить число по цифрам, вывести на экран каждую цифру и потом...

Разбить число на разряды
Задача: получить число 123456, переменным i,j,k присвоить соответственно 12,34,56. Далее вывести на...

17
3482 / 2486 / 1173
Регистрация: 14.08.2016
Сообщений: 8,185
18.06.2019, 01:19 2
последнее обязано иметь и целое и дробное? а что если или одного или второго или даже ни того ни второго нету?
да и собссно на куа это понадобилось? задачу озвучь
0
53 / 43 / 22
Регистрация: 29.05.2016
Сообщений: 214
18.06.2019, 03:21 3
C#
1
2
3
4
5
6
7
int number = int.Parse(Console.ReadLine());
 
            while (number != 0)
            {
                Console.WriteLine(number % 10);
                number /= 10;                
            }

Решение для вещественных чисел возможно после полного условия задачи
0
4 / 3 / 1
Регистрация: 11.04.2016
Сообщений: 13
18.06.2019, 12:20 4
Может что то типа этого
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
          
            double i = double.Parse(Console.ReadLine());
            string str = i.ToString();
            for (int j = 0; j < str.Length; j++)
            {
                if (str[j] == ',')
                {
                    Console.Write(str.Substring(j));
                    break;
                }
 
                if (j > 0)
                    Console.Write(" ");
                Console.Write(str[j]);
            }
0
0 / 0 / 0
Регистрация: 28.04.2009
Сообщений: 127
18.06.2019, 12:56  [ТС] 5
Нужно выделить разряды из 4-х значного числа с плавающей точкой.
Числа всегда имеют формат хххх.хх
Именно для чего это нужно, объяснять долго, задача слишком специфическая и проверочная. Если кратко, то для нормализации каждого разряда.
Поэтому мне нужно как-то получить вид - x; x; x; x.xx
Последний десяток имеет дробную часть, ее нельзя откинуть. Если бы ее не было, я бы просто решил эту задача, разбил строку на символы на питоне.
Но задача должна быть решена именно C#. а тут я совсем плаваю.

Добавлено через 35 минут
Rbhbkk-00, у меня данные не с консоли вводятся, я сразу получаю число и перегоняю его в строку.
C#
1
2
3
4
5
if (str[j] == ',')
                {
                    Console.Write(str.Substring(j));
                    break;
                }
вот тут я не понял. Если запятая... запятой нет, разделитель точка. Но хорошо, вот у нас точка и break... не могу понять))
0
Эксперт .NET
5869 / 4746 / 2940
Регистрация: 20.04.2015
Сообщений: 8,361
18.06.2019, 13:08 6
Лучший ответ Сообщение было отмечено slavavs как решение

Решение

C#
1
2
3
4
5
6
double d = 9509.32;
int n = (int)(d * 100);
int n1 = n / 100000;
int n2 = n % 100000 / 10000;
int n3 = n % 10000 / 1000;
double n4 = (double)(n % 1000)/100;
1
0 / 0 / 0
Регистрация: 28.04.2009
Сообщений: 127
18.06.2019, 13:30  [ТС] 7
Python
1
2
3
4
5
6
a = 7563.34
while (a > 1):
    b = a % 10
    a /= 10
    a = int(a)
    print(b)
На питоне решил задачу легко.
Как на C# это написать?
0
97 / 98 / 58
Регистрация: 29.09.2016
Сообщений: 410
18.06.2019, 13:34 8
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
            double number = 283.43;
            double[] result;
            if (Convert.ToInt32(number) == Convert.ToDouble(number))
            {
                result = number.ToString().Select(x => (double)char.GetNumericValue(x)).ToArray();
            }
            else
            {
                int temp = (int)number;
                result = temp.ToString().Select(x => (double)char.GetNumericValue(x)).ToArray();
                result[result.Length - 1] += Math.Round((number - (int)number),2);
 
            }
1
2785 / 1661 / 878
Регистрация: 14.04.2015
Сообщений: 5,650
18.06.2019, 13:36 9
slavavs,
C#
1
2
3
4
5
6
7
8
9
10
11
            double InputDoubleValue = 5634.35;
 
            char[] FirstPart = InputDoubleValue.ToString().Substring(0, InputDoubleValue.ToString().IndexOf(',') - 1).ToCharArray();
 
            string SecondPart = InputDoubleValue.ToString().Substring(InputDoubleValue.ToString().IndexOf(',') - 1);
 
            foreach (char X in FirstPart)
            {
                Console.Write(X + "; ");
            }
            Console.WriteLine(SecondPart);
1
4 / 3 / 1
Регистрация: 11.04.2016
Сообщений: 13
18.06.2019, 13:57 10
это сразу данные в строку
C#
1
2
string str = Console.ReadLine();
// string str = "1234,45";
запятая потому что у меня так в настройках разделитель стоит,у тебя точка наверное,поменяй просто запятую на точку.
В конце брейк потому что если мы дошли до последнего числа,то мы его сразу выводим,а не по 1 символу,если брейк убрать у нас выведется 5; 6; 3; 4.35; 3; 5;

Добавлено через 20 минут
Это вроде тоже самое что у тебя на питоне

C#
1
2
3
4
5
6
7
8
            var a = 7563.34;
            while (a > 1)
            {
                var b = a % 10;
                a /= 10;
                a = (int)a;
                Console.Write("{0:0.##} ", b);
            }
1
0 / 0 / 0
Регистрация: 28.04.2009
Сообщений: 127
18.06.2019, 14:30  [ТС] 11
Спасибо за ваше внимание. Решил эту задачу.
Из этой же темы есть вторая задача.
Имеют числа целые! Их диапазон от 0 до 1000 (x, xx, xxx, xxxx - разряды)
Если мне пришло число 25 - то его нужно вывести в виде 0; 0; 2; 5
Есть идея как нули добить вначале?
0
4 / 3 / 1
Регистрация: 11.04.2016
Сообщений: 13
18.06.2019, 15:14 12
Лучший ответ Сообщение было отмечено slavavs как решение

Решение

while на for изменить и всё тоже самое по идеи
C#
1
2
3
4
5
6
7
            var a = 75;
            for (int i = 0; i < 4; i++)
            {
                var b = a % 10;
                a /= 10;
                Console.Write(b + " ");
            }
1
0 / 0 / 0
Регистрация: 28.04.2009
Сообщений: 127
18.06.2019, 15:21  [ТС] 13
А может быть 25\10000 = 0.0025
вытащить после точки 0025?

Добавлено через 4 минуты
Даценд в предыдущем примере грамотно распихал данные в переменные, чтобы их можно было вывести.
В цикле так не получится, нужно их присвоить в свою переменную, так как вывожу я их в строку (вставляю) каждую переменную в свое место.
0
97 / 98 / 58
Регистрация: 29.09.2016
Сообщений: 410
18.06.2019, 15:39 14
slavavs, то есть, задача прям подвязана под 4-х значное число или меньше? Ну как-то коряво все это .
0
0 / 0 / 0
Регистрация: 28.04.2009
Сообщений: 127
18.06.2019, 15:46  [ТС] 15
максимум может быть 4 знака.
Если знаков меньше, мне нужно забить это нулями.
Я работаю с матричным умножением, там размерность важна
0
4 / 3 / 1
Регистрация: 11.04.2016
Сообщений: 13
18.06.2019, 15:46 16
25\10000 = 0.0025 надо что бы 4 числа после точки отображалось?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
            var a = 7563.34;
            var mas = new double[4];
            var count = 0;
            while (a > 1)
            {
                var b = a % 10;
                a /= 10;
                a = (int)a;
             //   Console.Write("{0:0.##} ", b);
                mas[count] = b;
                count++;
            }
            for (int i = mas.Length-1; i >= 0; i--)
                Console.Write("{0:0.##} ", mas[i]);
1
97 / 98 / 58
Регистрация: 29.09.2016
Сообщений: 410
18.06.2019, 15:53 17
Лучший ответ Сообщение было отмечено slavavs как решение

Решение

slavavs, ну тогда че париться.
прописываем жестко
C#
1
2
3
4
5
6
7
8
9
           double[] result = new double[4] { 0, 0, 0, 0 };
 
            result[3] = Math.Round((number % 10),2);
            number = (int)number/ 10;
            result[2] = number % 10;
            number = (int)number / 10;
            result[1] = number % 10;
            number = (int)number / 10;
            result[0] = number;
1
0 / 0 / 0
Регистрация: 28.04.2009
Сообщений: 127
18.06.2019, 17:10  [ТС] 18
Цитата Сообщение от ahtik95 Посмотреть сообщение
slavavs, ну тогда че париться.
прописываем жестко
C#
1
2
3
4
5
6
7
8
9
           double[] result = new double[4] { 0, 0, 0, 0 };
 
            result[3] = Math.Round((number % 10),2);
            number = (int)number/ 10;
            result[2] = number % 10;
            number = (int)number / 10;
            result[1] = number % 10;
            number = (int)number / 10;
            result[0] = number;
result[3] = Math.Round((number % 10),2);
В этой строке не совсем пойму, вроде и без округления все работает
0
18.06.2019, 17:10
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.06.2019, 17:10
Помогаю со студенческими работами здесь

Разбить число на разряды
Доброго всем времени суток! Есть функция the_field('fild_name'), из плагина ACF для WordPress. Она...

Разбить десятичное число на разряды
Добрый день. Подскажите, а существует ли какая-нибудь функция, позволяющая отделить n-й разряд от...

Как разбить семизначное число на отдельные разряды?
Предположим у меня есть переменная: unsigned int value = 7654321; Я хочу разбить это число на...

Разбить число на разряды - замечание A non well formed numeric value encountered
опенкарт, надо разбить число на разряды. 10000 в 10 000 нашел пример как это сделать, делаю: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru