|
Как проще оставить лишь значимые цифры в целом числе?
|
|||
---|---|---|---|
#18+
Собственно, сабж: как проще узнать количество нулей справа в ЦЕЛОМ числе и отбросить их, оставив лишь значимые цифры? Нули между значимыми числами - также должны остаться. Как это сделать в цикле - понятно, например - через циклическую оценку MOD(число,10). Нет ли более прямых без-цикловых альтернатив? Что-то ничего дельного не приходит в голову :( ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2016, 15:00 |
|
Как проще оставить лишь значимые цифры в целом числе?
|
|||
---|---|---|---|
#18+
Преобразовать в строку, а затем анализировать последний символ ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2016, 15:04 |
|
Как проще оставить лишь значимые цифры в целом числе?
|
|||
---|---|---|---|
#18+
В любом случае будет цикл, т.к. все алгоритмы поразрядно работают. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2016, 15:06 |
|
Как проще оставить лишь значимые цифры в целом числе?
|
|||
---|---|---|---|
#18+
Спасибо, но это - тоже цикл. Интуиция мне подсказывает, что должен существовать какой-то способ типа "взгляд сверху" сразу на ВСЁ число :) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2016, 15:07 |
|
Как проще оставить лишь значимые цифры в целом числе?
|
|||
---|---|---|---|
#18+
neznajkaИнтуиция мне подсказывает, что должен существовать какой-то способ типа "взгляд сверху" сразу на ВСЁ число :)Плохая интуиция часто вводит в заблуждение. Кстати, на каком-нить примере поясните ваше понимание слова "значащий" по отношению к конкретному разряду числа. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2016, 15:27 |
|
Как проще оставить лишь значимые цифры в целом числе?
|
|||
---|---|---|---|
#18+
Если число в таблице хранится, и свойство Numeric, то данные хранятся без ведущих нулей. Если Chsr, то симольное значение может быть и с нулями впереди. Здесь нужно глянуть свойтво поля, и сделать соответствующие преобразования. Если это показывается в форме в поле, то нужно смотреть свойство Format, этого поля, там может стоять знак "С ведущими нулями". Нужна более полная информация. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2016, 15:49 |
|
Как проще оставить лишь значимые цифры в целом числе?
|
|||
---|---|---|---|
#18+
М-дя, неточно выразился в отношении целого числа. Уточняю: использовал слово "значащий" - в смысле "все цифры, кроме нуля". Вопрос, наверное, надо свести к "как проще узнать, сколько раз данное целое число делится на 10 без остатка". По-видимому, интуиция и вправду подводит - без цикла никак не обойтись :( To Дед Евгений: Не, я в данном случае "борюсь " вовсе не с ВЕДУЩИМИ нулями :) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2016, 16:11 |
|
Как проще оставить лишь значимые цифры в целом числе?
|
|||
---|---|---|---|
#18+
Можно чуть уменьшить количество операций с помощью CASE Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2016, 16:17 |
|
Как проще оставить лишь значимые цифры в целом числе?
|
|||
---|---|---|---|
#18+
Спасибо, Dima T ! Это действительно сокращает мне количество операций проверки. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2016, 16:21 |
|
Как проще оставить лишь значимые цифры в целом числе?
|
|||
---|---|---|---|
#18+
neznajka, это сокращает количество написанных операций под капотом кейса ЕМНИП живёт тот же самый иф ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2016, 09:45 |
|
Как проще оставить лишь значимые цифры в целом числе?
|
|||
---|---|---|---|
#18+
tanglirэто сокращает количество написанных операций под капотом кейса ЕМНИП живёт тот же самый иф Он про цикл писал, типа такого Код: sql 1. 2. 3.
тут операций больше. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2016, 10:18 |
|
Как проще оставить лишь значимые цифры в целом числе?
|
|||
---|---|---|---|
#18+
Совершенно верно, Dima T - именно такой цикл мне первым и пришёл, было, в голову :) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.07.2016, 11:26 |
|
Как проще оставить лишь значимые цифры в целом числе?
|
|||
---|---|---|---|
#18+
Гм... Неожиданно вспомнил о наличии параметров в функциях ALLTRIM(), LTRIM(), RTRIM() - и нашёл вроде и не слишком элегантное, но вполне приемлемое для меня "безцикловое" решение: nnn=120000 && Исходное целое число с неизвестным числом нулей справа asd=ALLTRIM(STR(nnn,12,0)) && Делаем из него строку с заведомо "вместительным" количеством знакомест ? LEN(asd)-LEN(RTRIM(asd,1,'0')) && Выясняем искомое количество нулей Может и не "подвиг программера" - но вполне работает :) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2016, 20:58 |
|
Как проще оставить лишь значимые цифры в целом числе?
|
|||
---|---|---|---|
#18+
neznajka, разве задача не состояла в получении как можно более быстрого алгоритма? Наверное, даже do while с делением на 10 будет быстрее этого решения на строках. не могу по этому поводу не вспомнить бессмертное Код: sql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2016, 07:44 |
|
Как проще оставить лишь значимые цифры в целом числе?
|
|||
---|---|---|---|
#18+
Да? А я думал, чем меньше команд - тем быстрее алгоритм :( Обидно, однако, что так всё нелогично устроено... А мне всегда так нравились строковые функции в Фоксе!.. Ладно, пусть уж тогда будет набивший мне оскомину цикл - мне потом всё равно это понадобится в Python+JavaScript переводить - так цикл, наверное, будет легче перевести. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2016, 10:47 |
|
Как проще оставить лишь значимые цифры в целом числе?
|
|||
---|---|---|---|
#18+
neznajkaчем меньше команд - тем быстрее алгоритм :(Тогда вот ещё вариант - написать функцию, которая вычисляет количество нулей, и вызывать её. Вызов функции - всего одна команда, такой код просто порвёт все остальные варианты по производительности ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2016, 11:49 |
|
Как проще оставить лишь значимые цифры в целом числе?
|
|||
---|---|---|---|
#18+
Да ну! Самописная же функция - заведомо медленнее, чем встроенная. Я лишь о встроенных функциях/командах в данном случае писал. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2016, 12:34 |
|
Как проще оставить лишь значимые цифры в целом числе?
|
|||
---|---|---|---|
#18+
neznajka, долго проверить, что ли запусти каждый вариант миллион(10,100...) раз, выведи время ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2016, 12:57 |
|
Как проще оставить лишь значимые цифры в целом числе?
|
|||
---|---|---|---|
#18+
чай машинное время нынче не расписано по минутам :) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2016, 12:57 |
|
Как проще оставить лишь значимые цифры в целом числе?
|
|||
---|---|---|---|
#18+
Да я так обычно и проверяю. В моей ситуации - цикл всё-таки лучше. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2016, 13:09 |
|
Как проще оставить лишь значимые цифры в целом числе?
|
|||
---|---|---|---|
#18+
neznajkaГм... Неожиданно вспомнил о наличии параметров в функциях ALLTRIM(), LTRIM(), RTRIM() - и нашёл вроде и не слишком элегантное, но вполне приемлемое для меня "безцикловое" решение: nnn=120000 && Исходное целое число с неизвестным числом нулей справа asd=ALLTRIM(STR(nnn,12,0)) && Делаем из него строку с заведомо "вместительным" количеством знакомест ? LEN(asd)-LEN(RTRIM(asd,1,'0')) && Выясняем искомое количество нулей Может и не "подвиг программера" - но вполне работает :) Можно и не выяснять количество нулей, а сразу убрать их: Код: sql 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.07.2016, 13:53 |
|
Как проще оставить лишь значимые цифры в целом числе?
|
|||
---|---|---|---|
#18+
Спасибо за участие, SoftwareBoy. Я, наверное, недостаточно чётко описал свой вопрос - мне количество нулей знать всё-таки НУЖНО, т.к. оно далее используется в программе для указания множителя. В принципе - всё уже заработало как я хотел, поэтому тему можно считать закрытой. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2016, 12:28 |
|
|
start [/forum/topic.php?fid=41&msg=39270339&tid=1582090]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
35ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 144ms |
0 / 0 |