Вход | Регистрация
 
Информационные технологии :: Математика и алгоритмы

Как вычислить дробное число ?

Как вычислить дробное число ?
Я
   vv2304
 
25.01.19 - 10:52
Производитель после продажи забил, приходится теперь самому расхлебывать.
В общем, из в штрихкоде (EAN128) содержится в определенных разрядах
310y и сразу после этого идут 6 знаков. "y" - это колич. знаков после запятой.
Например 3102000230
Это значит, что вес = 2.3 кг.
Сижу и никак не придумаю алгоритм. Дописывать не в 1С, т.е. простая математика.
 
 
   mistеr
 
1 - 25.01.19 - 10:55
Не понял юмора. Нужен алгоритм как поделить 230 на 10 в степени 2 или что?
   Натуральный Йог
 
2 - 25.01.19 - 10:56
(0) а 3104030250 это 3,025 кг?
   Timon1405
 
3 - 25.01.19 - 10:56
интуиция подсказывает, что нужно использовать операции
%(он же остаток от деления) и Цел() или его аналог не в 1С
   Strogg
 
4 - 25.01.19 - 10:57
да че сложного-то? У - количество знаков после запятой - сам же и написал. т.о. ты точно знаешь длину блока 310у. Таким образом, функцией деления на 10 в степени у-1(коллеги поправьте, если что) ты выделяешь дробную часть...
Ну, и ведущие нули убрать...
   ДенисЧ
 
5 - 25.01.19 - 10:58
Если Лев(шк, 3) = "310" Тогда
  колЗнаков = Число(Сред(шк, 4, 1));
  Вес = Число(сред, шк, 5) * Pow(10, колЗнаков);
КонецЕсли;
   vv2304
 
6 - 25.01.19 - 11:01
"3104030250 это 3,025 кг?"
нет, 310-это постоянно, далее У-это показывает колич. знаков после запятой.
Далее 6 знаков отводится под вес товара.

Это не в 1С, я даже не знаю какие функции там заложены поэтому могу оперировать только умножением, делением, сложением и вычитанием.
   ДенисЧ
 
7 - 25.01.19 - 11:02
Если не на 1с, то на каком языке?
   Strogg
 
8 - 25.01.19 - 11:08
(6) тебе в любом случае надо отсечь первые 4 символа, перевести оставшуюся строку в число и разделить его на 10 количество раз, равное у.
Вот и ищи такие методы в sql, или где ты там это делать будешь...
   vv2304
 
9 - 25.01.19 - 11:10
Там где я могу подобраться
EAN128= global::Cleverence.Barcoding.Ean128.FormatAndParse(ScannedBarcode)
ГоденДо= EAN128.GetValue("15")
ВесУп = EAN128.WeightInKg

Объекта EAN128 нет, пишет ошибку.
Поэтому надо как-то из типа вот такого
01950123456789033103000123
получить вес
   vv2304
 
10 - 25.01.19 - 11:12
(8) Уже лучше. Осталось узнать как у них там можно циклы писать.
 
 Рекламное место пустует
   Strogg
 
11 - 25.01.19 - 11:15
(9) блин, может тебе сначала посмотреть спецификации GS1?
блок 310х, обычно, идет после блока 01. Причем, 01 блок (GTIN) имеет фиксированное количество символов. Но это так, предположения, как у вас там сделано - хз. Если блок нефиксированной длины, то в конце блока идет символ FNC1, как окончание блока.
Тебе в любом случае необходимо парсить свой шк...
   mikecool
 
12 - 25.01.19 - 11:17
(9) если это конфига клеверенса, то они поддерживают еан128 из коробки
   mikecool
 
13 - 25.01.19 - 11:18
Поэтому надо как-то из типа вот такого
01950123456789033103000123
это точно еан 128?
   Натуральный Йог
 
14 - 25.01.19 - 11:18
(6) 3104030250 это сколько кг?
   mikecool
 
15 - 25.01.19 - 11:18
+12 только включить это надо в настройках, не знаю где, ищи
   Вафель
 
16 - 25.01.19 - 11:19
взять строку - поставить точку в позиция "номер" с конца.
потом Число(НоваяСтрока)
   vv2304
 
17 - 25.01.19 - 11:23
(11) Блок фиксированный, 310у я вытащил, оставшуюся часть тоже без проблем. Проблем в данном случае-это написание цикла
(14) 3.025 кг
(13) Точно.
"если это конфига клеверенса, то они поддерживают еан128 из коробки"
Нет !
Только под опред. список.
Они не поддерживают даже в приложении для ПК.
Если вводить
(01)09004699781890(10)0003768400009(15)191130(3103)032500(99)1
тогда да.
Если же
0109004699781890100003768400009151912303103032500991
тогда фиг.
   mistеr
 
18 - 25.01.19 - 11:24
(16) На 1С каждый сможет. А вот на неизвестном языке на неизвестной платформе — слабо?
   vv2304
 
19 - 25.01.19 - 11:27
Вот с ихнего сайта
"global::Cleverence.Barcoding.Ean128.FormatAndParse(штрихкод) - в качестве аргумента служит еще неотформатированный с помощью скобок штрихкод "
Вбиваю неотформатированный ШК в приложении для ПК, получаю ошибку.

Ладно, полез циклы пробовать.
   Arbuz
 
20 - 25.01.19 - 11:39
(2) -> (6) -> (14) -> (17) Очень интересно! Как можно помочь, если на один и тот же однозначный вопрос - то да, то нет?
   vv2304
 
21 - 25.01.19 - 11:52
(20) Ну очепятка в (6)


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует