Всехавающая функция преобразования строки в число #720558


#0 by SeiOkami
Всем добра! Есть ли где-нить функция, которая бы такие строки: 1000000.01 1,000,000.01 1 000 000,01 1 000 000.01 1.000.000,01 1000000,01 1,000,000,01 1.000.000.01 преобразовала в число 1000000.01 (миллион и одна сотая) Понятно, что можно написать, но, вдруг уже где-то подходящее есть. Поисковик мне не помог (
#1 by Maxus43
нету таких извращений готовых. имхо
#2 by Ёпрст
пиши сам
#3 by sintez1234
Есть такая функция - это я! :) У меня из всех строк получилось именно 1000000.01 в итоге. Возмешь меня на работу? :)
#4 by Балоун
1.000 - это сколько словами?
#5 by sintez1234
Вот из этой строки 1,000,000,01 программно получить 1000000.01 будет затруднительно очень.
#6 by PR
Функция-то на 10 строчек. Стыдно должно быть, товарищ :))
#7 by SeiOkami
, с ежедневной нагруженостью пару тысяч строк и зарплатой равной нулю При этом ответ на запрос не должен превышать секунды =)
#8 by sintez1234
#9 by Балоун
фигня. вот вчера слова в кавычках выковыривали..
#10 by PR
Да легко
#11 by SeiOkami
, уверен?
#12 by Эльниньо
Одна целая, х.й десятых
#13 by sintez1234
Да пофиг, я согласен если ночевать у вас там можно :)
#14 by PR
Абсолютно
#15 by MSII
Элементарно. Значимый разделитель - самый правый, остальные игнорируем.
#16 by Chum
п-ц! ТС, ты не дельфист случайно? На любой кипишь пытаешься искать готовую компоненту.
#17 by Зойч
там параметры должны быть опционально
#18 by КонецЦикла
Работай сцуко
#19 by PR
Неудача :))
#20 by КонецЦикла
Может его и не быть
#21 by sintez1234
фигня, я вчера опять биржевого бота на 1с пилил, с шифрованием по SHA-512 подписью по нему же, работает по API сервера биржи, без использования никакого вспомогательного языка или приблуд, чистый 1с только. Я выйграл :P
#22 by MSII
Почему? Если нет разделителя - это целое число. Понятно, что нужен массив возможных разделителей.
#23 by SeiOkami
Ну в общем, приму что её просто нет и надо написать. Всем спасибо за пинок =)
#24 by Балоун
->
#25 by sintez1234
а ниче, обращайся, у нас вон еще мешок люлей в углу стоит пылится
#26 by Ёпрст
как на счет такого ? 1,000,000.010,001,01
#27 by Garykom
#28 by Garykom
+ затратил 9 минут )) с тебя 500/60*9 рублей...
#29 by Балоун
незачёт
#30 by shpioleg
А что с ним? Проверить справа разделитель, заменить все разделители на ничто и собрать строку с дробной частью. ИМХО, меньше 10 строк.
#31 by Garykom
что низзя символы из строки по Для Каждого получить? дык я сча в режиме C# в связи с CodeHockey ))
#32 by PR
Если не пытаться сделать именно в десять строк, а расписать код понятнее, то вот :))
#33 by PR
Потому что дробной части может не быть
#34 by Балоун
#35 by Garykom
читай код лучше тама условие у меня
#36 by Ёпрст
какой разделитель ?
#37 by Garykom
1 насчет "йх" не понял 2 все ясно это 1 у меня последний разделитель это дробная часть так что все ясно ))
#38 by Балоун
1 - проверка на дебила 2 - я вижу там тысячу
#39 by PR
Это точно мне?
#40 by Ёпрст
+36, хоть и группировка триад в дробной части, как правило, отсутствует, но мало ли, найдутся извращенцы, для которых
#41 by vde69
сделай по аналогии
#42 by Garykom
нет ошибся, думал что относится в
#43 by Garykom
незачет, потому что нет камментов )) и дробную дальше тысячной не рассматривает...
#44 by Garykom
+ да и никто не сказал что забыл вставить однако
#45 by MSII
Тогда пипец котенку, ибо разделитель дробной части может и выглядеть как разделитель групп и пахнуть как разделитель групп.
#46 by shpioleg
Для 2 знаков после запятой или целого
#47 by Котокот
А че там сложного? Берешь константы К1="0123456789" и К2=".,", начинаешь просматривать свою строку начиная с последнего символа, справа налево. Если символ принадлежит К1, то оставляешь его, если принадлежит К2 и это первый встретившийся такой символ, то заменяешь на ",", иначе удаляем (таким образом оставляем последний разделитель дробной части). Если не принадлежит ни К1, ни К2 - удаляем. В итоге имеем строку, состоящую только из цифр и с первым с правого края разделителем, замененным на ",". Далее функция Число.
#48 by PR
Да ладно-ка. Ничего, что после разделителя дробной части может быть не более двух цифр?
#49 by PR
Неправильно
#50 by Котокот
Сфигали?
#51 by Fish
Это кто тебе такую глупость сказал? Про тысячные никогда не слышал что ли?
#52 by Ёпрст
разделитель триад будет зпт, к примеру, число не дробное - твой алгоритм из целого числа сделает дробное.. занавес
#53 by dmpl
А если число целое?
#54 by Garykom
про не дробные числа, ну ка, где в постановке задачи есть такие? давайте уже правильно читать ТЗ...
#55 by Котокот
Падла... Падлавил... Ладно, пойду еще подумаю.
#56 by Балоун
давайте. (миллион и одна сотая)
#57 by Garykom
вообще то в данном случае " и " разделитель целой и дробной части ))
#58 by Балоун
ладно. где в постановка задачи?
#59 by DS
А где ТЗ? Не заметил...
#60 by Ёпрст
ну вы што ? "Всехавающая функция преобразования строки в число" не должна делать такие примитивные умозаключения ????
#61 by PR
Потому что
#62 by Garykom
"ТЗ" в данном случае "Тупое Задание"
#63 by PR
Ну ты как всегда в своем репертуаре. В сабже с большой долей вероятности речь про суммы. 99.99% случаев для сумм — 0, 1 или 2 знака после запятой.
#64 by vde69
ну всеохватывающей - сделать в принцепе нельзя, по тому как в некоторых случаях будет множественность решений. я-бы пошел по пути "обучения", там где вариант один - сразу ответ, там где несколько запомнинал выбраный пользователем правильный формат
#65 by dmpl
В соответствии с ТЗ:
#66 by shpioleg
Для дробных с пофиг сколько знаков после запятой
#67 by vde69
то есть алгоритм такой 1. заполняем соответствие возможных ваинтов "формат"-"значение", если результат один - он и есть ответ 2. дальше ищем "форматы" в базе знаний, если есть совпадение - значит он и есть ответ 3. совпадения формата нет - спрашиваем пользователя....
#68 by PR
Вот. Настоящий кодер на 20000 оклада :))
#69 by Garykom
у мну оклад 35 килорублей, аж обидно стало ((
#70 by Garykom
во 100% решение, только еще бы контекст учитывать, когда формат один а ответов нескоко )) т.е. не спрашивать лишний раз
#71 by Garykom
т.е. банально расширить формат на не одно число а на набор чисел-строк (если список дают) или откуда вызывают к примеру ))
#72 by PR
От того, что у тебя больше?
#73 by Зойч
для каждой строки в базе хранить чило? база не лопнет?
#74 by Garykom
нет, оттого что разница такая в окладе мелкая, не смотря на разницу в скиллах...
#75 by vde69
в базе хранится только интерактивные ответы пользователя, то есть это обучающийся алгоритм, и в принцепе не так сложно реализовать.
#76 by PR
Так это же с премией в 80% :))
#77 by Garykom
тогда еще хуже, у мня ваще почти нету премий :((
#78 by Garykom
не не, надо не так, сделать веб-сервис с техподдержкой девочек которые там сидят типа вызываем функцию и она все делает сама (для пользователя-программиста) - ну да некоторые долго думает, пока оператор на поддержке вебсервиса отработает  :))
#79 by MishaD
(658) Ну почему 20. Решение в соответствии с ТЗ, как раз на 200,000,00
#80 by PR
Решение в соответствии с ТЗ не означает максимальную удовлетворенность клиента. А вот получение денег максимальная удовлетворенность клиента означает.
#81 by MishaD
Ну максимальной удовлетворенности клиента можно разными методами достичь
#83 by 13_Mult
Я бы регулярками сделал если массив большой а так вот на коленке:
#84 by А4407-6Б
#85 by samozvanec
#86 by samozvanec
еще больше получение денег означает удовлетворенность программиста)
#87 by cathode
Еще давно, где-то году в 2006, я делал на 8.0 функцию преобразования строки в число, максимально совместимую с той, которая используется в 7.7. Сейчас посмотрел ее на указанных данных, работает. Чуть модифицировал для дробных/недробных с одинаковым разделителем десятичной части и разделителем триад. Достоинства:   * По умолчанию все нечисла превращаются в 0 (как в 7.7)   * Отбрасывается правая нечисловая часть, типа "123.45 р." (как в 7.7)   * Корректно обрабатывает все варианты из , т.е. почти всеядная. Недостатки:   * Будет пытаться преобразовать в число даже нечисловые значения, содержащие цифры. Например, IP-адреса ("192.168.100.123" преобразуется в 192168100,123).   * Не проверяет консистентность группировки разрядов ("356 23 1234" преобразуется в 356231234). Может, кому нужна будет...
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С