|
Как прочитать цифры в числе | ☑ | ||
---|---|---|---|---|
0
Никулин Леонид
19.06.12
✎
11:21
|
Подскажите как прчитать цифры в числе по одной и с конца? Например число 12345. Чтоб я получил 5, потом 4, потом 3, потом...
Спасибо |
|||
1
Нуф-Нуф
19.06.12
✎
11:22
|
сред спасет отца русской демократии
|
|||
2
Cube
19.06.12
✎
11:22
|
(0) Нужно себя как-то заставить...
Кури Лев(), Прав(), Сред()... |
|||
3
Никулин Леонид
19.06.12
✎
11:24
|
Разобрался
|
|||
4
vasilii85
19.06.12
✎
11:26
|
А, зачем спрашивал?
|
|||
5
х86
19.06.12
✎
11:31
|
(0) /10 /100 /100 + Цел()
|
|||
6
andrewks
19.06.12
✎
11:31
|
(1)(2) ламеры. % + Цел надо юзать
|
|||
7
Cube
19.06.12
✎
11:33
|
(6) Не обоснованное заявление.
|
|||
8
andrewks
19.06.12
✎
11:34
|
(7) ему нужно _цифры_ в _числе_. если вы предлагаете излишнее преобразование типов делать сначала в одну сторону, а потом назад, то это тоже некошерно
|
|||
9
zak555
19.06.12
✎
11:34
|
(6) а если это нецелое число ?
|
|||
10
andrewks
19.06.12
✎
11:43
|
(9) и этот случай тоже можно обработать
|
|||
11
Cube
19.06.12
✎
11:44
|
(8) Ещё неизвестно, что быстрее: математические операции или преобразование типов... Так что ещё не известно, какой способ производительнее....
|
|||
12
zak555
19.06.12
✎
11:44
|
(10) обработай !
=) |
|||
13
Нуф-Нуф
19.06.12
✎
11:45
|
(6) а в глаз?
|
|||
14
Нуф-Нуф
19.06.12
✎
11:46
|
Сред()! Остальные идут лесом
|
|||
15
Ненавижу 1С
гуру
19.06.12
✎
11:47
|
(14) %10 наше всё
|
|||
16
andrewks
19.06.12
✎
11:49
|
(13) подходи
|
|||
17
Serg_1960
19.06.12
✎
12:01
|
(12) Было бы из-за чего сыр-бор городить. На, обработал :( по теме - сами дописывайте :)
ЧислоХ = 1234.12345; ЦелаяЧасть = Цел(ЧислоХ); ДробнаяЧасть = ЧислоХ - ЦелаяЧасть; Для Разрядность = 0 По 15 Цикл Если ДробнаяЧасть = Окр(ДробнаяЧасть,Разрядность) Тогда Прервать; КонецЕсли; КонецЦикла; Сообщить(Разрядность); |
|||
18
Cube
19.06.12
✎
12:28
|
Че-то оба варианта работают быстро, так что (6) точно не прав :)
|
|||
19
Cube
19.06.12
✎
12:36
|
Вот код, которым проверял (может, конечно, в замере времени намудрил - хз):
Процедура КнопкаВыполнитьНажатие(Кнопка) Script = Новый COMОбъект("MSScriptControl.ScriptControl"); Script.Language = "javascript"; Для Сч = 1 По КоличествоЦиклов Цикл ТекстСообщения = "Шаг " + Сч + ": "; //Преобразование типов Начало = Script.eval("new Date().getTime()"); ИсходнаяСтрока = Формат(ИсходноеЧисло, "ЧГ="); НомерСимвола = СтрДлина(ИсходнаяСтрока); Пока НомерСимвола > 0 Цикл ТекущаяЦифра = Число(Сред(ИсходнаяСтрока, НомерСимвола, 1)); НомерСимвола = НомерСимвола - 1; КонецЦикла; ТекстСообщения = ТекстСообщения + (Начало - Script.eval("new Date().getTime()")) + " / "; //Математические операции Начало = Script.eval("new Date().getTime()"); ИсходноеЧислоДляОбработки = ИсходноеЧисло; Пока ИсходноеЧислоДляОбработки > 0 Цикл ТекущаяЦифра = ИсходноеЧислоДляОбработки % 10; ИсходноеЧислоДляОбработки = Цел(ИсходноеЧислоДляОбработки / 10); КонецЦикла; Сообщить(ТекстСообщения + (Начало - Script.eval("new Date().getTime()"))); КонецЦикла; КонецПроцедуры //КнопкаВыполнитьНажатие() ИсходноеЧисло = 123456789012345678901234567890; КоличествоЦиклов = 20; |
|||
20
Rizhij_Nikitos
19.06.12
✎
12:38
|
(19) Пользуйся замером производительности :)
|
|||
21
Ненавижу 1С
гуру
19.06.12
✎
12:42
|
(19) какая то хрень
КоличествоЦиклов = 20; ИсходноеЧисло = 123456789012345678912345678901234567891234567890123456789; Шаг 1: -1 / 0 Шаг 2: 0 / -1 Шаг 3: 0 / 0 Шаг 4: 0 / 0 Шаг 5: 0 / 0 Шаг 6: 0 / 0 Шаг 7: 0 / 0 Шаг 8: 0 / 0 Шаг 9: 0 / 0 Шаг 10: 0 / -1 Шаг 11: -1 / 0 Шаг 12: 0 / 0 Шаг 13: -1 / 0 Шаг 14: 0 / 0 Шаг 15: -1 / 0 Шаг 16: 0 / 0 Шаг 17: 0 / 0 Шаг 18: 0 / -1 Шаг 19: 0 / 0 Шаг 20: 0 / 0 |
|||
22
Cube
19.06.12
✎
12:44
|
(20) Да пожалуйста: http://storage5.static.itmages.ru/i/12/0619/h_1340095476_8714744_81652e7fd8.jpeg
:) |
|||
23
Cube
19.06.12
✎
12:49
|
+(22) Если подсчитать итоги, то:
Преобразование типов = 56,35%. Математические операции = 42,89%. Ну, математические операции пока лидируют :) |
|||
24
Ненавижу 1С
гуру
19.06.12
✎
12:51
|
(22) а если немного оптимизировать?
ТекущаяЦифра = ИсходноеЧислоДляОбработки % 10; ИсходноеЧислоДляОбработки = (ИсходноеЧислоДляОбработки-ТекущаяЦифра) / 10; |
|||
25
Cube
19.06.12
✎
12:54
|
(24) Тогда так:
Преобразование типов = 56,68%. Математические операции = 43,57%. Не оптимально?)) |
|||
26
Cube
19.06.12
✎
12:57
|
(21) Я от времени начала замера отнимал время окончания замера, а надо было наоборот. Но в любом случае, там слишком маленькая точность замера, нужно больше точность...
|
|||
27
Serg_1960
19.06.12
✎
13:10
|
(прикол) однофункциональный алгоритм :)
ЧислоХ = 1234.56789; Пока Цел(ЧислоХ) < ЧислоХ Цикл ЧислоХ = ЧислоХ * 10; КонецЦикла; Пока Цел(ЧислоХ) > 0 Цикл ЧислоХ = ЧислоХ * 0.1; Сообщить((ЧислоХ - Цел(ЧислоХ)) * 10); ЧислоХ = Цел(ЧислоХ); КонецЦикла; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |