|
Отсекаются нужные нули | ☑ | ||
---|---|---|---|---|
0
buketovav
24.09.19
✎
12:06
|
Добрый день, Дорогие Форумчане!
Такой вопрос: есть у меня ТЧ, в ней указано значение 0,20 Когда я обращаюсь к ней, чтобы выполнить математические действия, то система мне показывает, что там значение 0,2 Скажите, как мне сделать так, чтобы система при обращении к ТЧ видела так же 0,20? Я разбиваю число по разделителю и мне важно, чтобы было именно 20 после запятой, а не 2. Заранее благодарю. |
|||
32
buketovav
24.09.19
✎
13:27
|
вот вы народ то веселый
смотрите, мне надо сделать так: например у меня в поле ТЧ значение 12,20 далее я разделяю это значение на два на 12 и 20, и далее произвожу с каждым из них разные действия. не важно какие, гдавное, что мне нужно получить именно 20, а не 2 Теперь то понятно или все еще нет? Что странного в моем вопросе? Все такие грамотные на словах, а ответить так ни кто и не смог ))) |
|||
33
palsergeich
24.09.19
✎
13:29
|
(32) просто с нашим опытом - задача выглядит как минимум странно.
|
|||
34
piter3
24.09.19
✎
13:30
|
Нет.
|
|||
35
Случайный прохожий
24.09.19
✎
13:30
|
(32) ЗАЧЕМ??? Что ты потом с этими числами делаешь? Я сегодня ночью спать не буду если не узнаю!!!
|
|||
36
ДенисЧ
24.09.19
✎
13:30
|
(32) Тогда это у тебя не число, а строка. Вот и работай с ним как со строкой.
Какого овоща ты его в число пихаешь? |
|||
37
ДенисЧ
24.09.19
✎
13:31
|
(35) см (20) ))))
|
|||
38
palsergeich
24.09.19
✎
13:31
|
В упаковке наверняка хранится множитель, путем простейшей операции то что ты хочешь - можно сделать.
Поведение для типа число - незначащие 0 отбрасываются |
|||
39
Креатив
24.09.19
✎
13:32
|
(32)Ну можешь, если число меньше 10, то умножить на 10.
|
|||
40
Случайный прохожий
24.09.19
✎
13:32
|
Храни числа просто в разных реквизитах, а в таблицу записывай строку из конкатенации этих реквизитов
|
|||
41
Креатив
24.09.19
✎
13:32
|
(39)-не стоит вообще-то. Работай со строкой.
|
|||
42
Vadim_37
24.09.19
✎
13:33
|
только не говорите, что 12,20<>12,20000
|
|||
43
Жан Пердежон
24.09.19
✎
13:34
|
(32) а почему 20, а не 200 или 2000?
само число и его представление - немного разные вещи, а на тупые вопросы ответы обычно соответствующие |
|||
44
buketovav
24.09.19
✎
13:35
|
(36) я его не пихаю
когда-то кто-то сделал таким образом преобразование времени в число, а мне теперь надо его обратно конвертировать МассивЧасыМинутыВыезда = СтрРазделить(ЭтотОбъект.ВремяВДвижении, ","); ЧасыВыезда = МассивЧасыМинутыВыезда[0]; Если МассивЧасыМинутыВыезда.Количество() > 1 Тогда МинутыВыезда = МассивЧасыМинутыВыезда[1]; ЧасыВыездаВСекундах = ЧасыВыезда * 60 * 60; МинутыВыездаВСекундах = Формат(МинутыВыезда, "ЧДЦ=2") * 60 / 100; НовоеВремяВыездаВСекундах = ЧасыВыездаВСекундах + МинутыВыездаВСекундах; Дней = Цел(НовоеВремяВыездаВСекундах / 86400); Часов = Цел((НовоеВремяВыездаВСекундах - (Дней * 86400))/60/60); Минут = Окр(МинутыВыезда * 60 / 100); ВремяПрописью = Строка(Дней) + " дн. " + Строка(Часов) + " ч. " + Строка(Минут) + " м."; ВремяВДвиженииПрописью = ВремяПрописью; КонецЕсли; |
|||
45
palsergeich
24.09.19
✎
13:36
|
Добавь к дате число секунд и получишь что надо
|
|||
46
Креатив
24.09.19
✎
13:37
|
Если числа положительные, то вычитаешь из исходного целую часть и умножаешь на 100. И будут тебе нули.
|
|||
47
palsergeich
24.09.19
✎
13:37
|
Просто храни целочисленное количество секунд и не мучься
|
|||
48
Fish
24.09.19
✎
13:41
|
(44) т.е 1,2 - это 1 час 20 минут? Жесть какая.
|
|||
49
buketovav
24.09.19
✎
13:41
|
(45) это понятно все, но у меня получается так, что в время нужное мне сейчас в числовом формате, и там очень часто бывает более 24 часов, а система мне не показывает более 23:59:59, а порой может быть и 118 часов 40 минут
|
|||
50
3achem
24.09.19
✎
13:42
|
(44) Бо-же-мой
|
|||
51
Случайный прохожий
24.09.19
✎
13:43
|
(48) Может быть 1 час и 2-е минуты?
|
|||
52
buketovav
24.09.19
✎
13:43
|
(48) не, не правильно вы считаете
1,2 это будет не 1 час и 20 минут, читайте правильно код 60 * 0.20 /100 - вот так будет рассчитываться время, которое у нас в данном случае является 0.20 от часа |
|||
53
Lama12
24.09.19
✎
13:43
|
(44) А это зачем так?
Формат(МинутыВыезда, "ЧДЦ=2") * 60 / 100; Точнее Формат тут зачем? |
|||
54
buketovav
24.09.19
✎
13:43
|
(53) это была попытка выудить нолик )
|
|||
55
Случайный прохожий
24.09.19
✎
13:43
|
(51) Хотя не, все правильно 1ч 20 мин
|
|||
56
buketovav
24.09.19
✎
13:44
|
(55)
нет не правильно |
|||
57
Lama12
24.09.19
✎
13:45
|
Печаль... :-(
|
|||
58
Случайный прохожий
24.09.19
✎
13:45
|
(56) Простите нам неграмотных)))
|
|||
59
buketovav
24.09.19
✎
13:47
|
(58) вы реально не знаете как десятичное число перевести в часы и минуты?
|
|||
60
Случайный прохожий
24.09.19
✎
13:47
|
Храни в строке, перед записью пользуйся функцией "Формат", а для математических действий разбирай на числа.
|
|||
61
Случайный прохожий
24.09.19
✎
13:49
|
(59) Переводов может быть целая куча. Вопрос в том - каким переводом пользуешься ты. Например 0,5 можно расценивать как пол часа или 0 часов 5 минут или 0 часов 50 минут.
|
|||
62
Случайный прохожий
24.09.19
✎
13:49
|
(61) А алкаш совсем по-другому 0,5 переведет :)
|
|||
63
buketovav
24.09.19
✎
13:50
|
(61) 0.5 часа в любом случае это 1/2 часа, какие здесь еще могу быть переводы?
|
|||
64
Скиурус
24.09.19
✎
13:50
|
Часы = Цел(КодированноеЧисло);
Минуты = (КодированноеЧисло - Цел(КодированноеЧисло)) * 60; |
|||
65
Случайный прохожий
24.09.19
✎
13:51
|
(61) Например как в (61). Или я немогу так перевести?
|
|||
66
Скиурус
24.09.19
✎
13:52
|
(63) Если 0.5 часа это в любом случае 30 минут, то 0.2 часа это в любом случае 12 минут. И 0.20 тоже 12 минут. И 0.2000000000000000000000000000000000000000000 тоже 12 минут.
|
|||
67
buketovav
24.09.19
✎
13:54
|
(65) конечно, нет. Так как одна десятая часа равна 6 минутам. а Вы написали что-то не то. Как может быть 0.5 часа = 50 минут? Где логика?
|
|||
68
buketovav
24.09.19
✎
13:55
|
(66) согалсен, подскажите тогда формулу, как правильно перевести 0,2 часа в 12 минут, у меня не получается ))
|
|||
69
Скиурус
24.09.19
✎
13:56
|
(68) в (64) подсказал
|
|||
70
palsergeich
24.09.19
✎
13:57
|
2/10=12/60
Дальше школьные пропорции |
|||
71
Йохохо
24.09.19
✎
14:02
|
МинутыВыездаВДесятичныхДоляхЧасаОуМайГадабле = Число("0," + МинутыВыезда)
|
|||
72
dmpl
24.09.19
✎
14:12
|
(32) Вам нужны комплексные числа: у них есть действительная часть и мнимая.
|
|||
73
dka80
24.09.19
✎
14:16
|
||||
74
buketovav
24.09.19
✎
14:20
|
(73) кто же знает, зачем Вас выпустили ))
|
|||
75
ZDenis
24.09.19
✎
14:23
|
(68) 60 * 0,2 - не?
|
|||
76
Chum
24.09.19
✎
14:49
|
Уй блин.... Это УАТ штоле?
|
|||
77
piter3
24.09.19
✎
14:50
|
(76) видимо
|
|||
78
buketovav
24.09.19
✎
14:52
|
(76) не, самописная конфа
|
|||
79
Fish
24.09.19
✎
14:57
|
(78) Так а в чём проблема? Перевести 1,2 часа в тип дата? Так это вроде элементарно - сначала переводим в минуты, ну а потом в дни, часы и минуты.
|
|||
80
Chum
24.09.19
✎
15:05
|
(79) не, там с математикой туго.
|
|||
81
buketovav
24.09.19
✎
15:06
|
(80) а у Вас не туго?
|
|||
82
Serg_1960
24.09.19
✎
15:08
|
(79) Проблема в том, что автору не задали правильный вопрос :)
И у него может быть "своя" логика и может быть так (или не так): 1,20 ==> 1,2 ==> 1 час 20 минут; 1,02 ==> 1,2 ==> 1 час две минуты. :)) |
|||
83
Вафель
24.09.19
✎
15:10
|
нужно делить не строкой, а числами.
Целая часть и Дробная часть |
|||
84
buketovav
24.09.19
✎
15:13
|
(82) нет же, минута часа это же 1/60, а не 1/100. как Вы написали
|
|||
85
buketovav
24.09.19
✎
15:13
|
(83) что на что делить? поясните Вашу мысль, пожалуйста
|
|||
86
Serg_1960
24.09.19
✎
15:14
|
Автор, давай для особо одаренных... и тормозных:), всё заново:
ЭтотОбъект.ВремяВДвижении - это число от 0,0 до 24,59? Или как? |
|||
87
Вафель
24.09.19
✎
15:15
|
х = 1.2;
х_цел = Цел(х); х_дроб = 100* (х - х_цел); |
|||
88
RomanYS
24.09.19
✎
15:15
|
(83) в такой ситуации еще проще оперировать не числами, а датами. И просто использовать формат() для вывода
|
|||
89
buketovav
24.09.19
✎
15:16
|
(88) ну на данный момент есть уже числа, которые надо перевести в часы и минуты
|
|||
90
ZDenis
24.09.19
✎
15:17
|
(85) что надо то? как из 0.2 получить 12 минут я написал в (75)
|
|||
91
buketovav
24.09.19
✎
15:18
|
(90) а если будет 0,21, то как тогда считать?
|
|||
92
Fish
24.09.19
✎
15:18
|
(89) Какие? Можешь написать внятно, что у тебя есть, и что надо получить. Или мы из тебя будем по капле выдавливать?
|
|||
93
ZDenis
24.09.19
✎
15:19
|
(91) 60 * 0,21 - очевидно же
|
|||
94
Fish
24.09.19
✎
15:19
|
(91) 0,21 - это 0,21 часа?
|
|||
95
RomanYS
24.09.19
✎
15:19
|
(89) Формат('00010101' + ВремяВЧасах*3600,"ДФ=чч:мм")
|
|||
96
Fish
24.09.19
✎
15:20
|
(93) Правильнее будет сразу в секунды переводить, чтобы не получать дробных минут.
|
|||
97
buketovav
24.09.19
✎
15:20
|
(95) бывает больше чем 23.59.59 , может быть 100 часов. а может быть и 200
|
|||
98
buketovav
24.09.19
✎
15:21
|
(96) ЧасыВыездаВСекундах = ЧасыВыезда * 60 * 60;
МинутыВыездаВСекундах = МинутыВыезда * 60; |
|||
99
buketovav
24.09.19
✎
15:21
|
(96) ВремяВыездаВСекундах = ЧасыВыездаВСекундах + МинутыВыездаВСекундах;
|
|||
100
buketovav
24.09.19
✎
15:21
|
Дней = Цел(НовоеВремяВыездаВСекундах / 86400);
Часов = Цел((НовоеВремяВыездаВСекундах - (Дней * 86400))/60/60); МинВСекундах = НовоеВремяВыездаВСекундах - (Дней * 86400) - (Часов * 3600); |
|||
101
Fish
24.09.19
✎
15:23
|
(98) Если ты про твой код в (44) то там всё начало с бредом раздожения по разделителю нужно выкинуть.
Что у тебя в поле "ЭтотОбъект.ВремяВДвижении" - время в часах с десятыми и сотыми? |
|||
102
RomanYS
24.09.19
✎
15:23
|
(97) так добавь дни в формат. Какой результат нужен?
|
|||
103
buketovav
24.09.19
✎
15:23
|
(101) число
|
|||
104
Fish
24.09.19
✎
15:24
|
(103) Пля. Что это число означает? Что такое в твоём случае 1,2. А что 345,67?
|
|||
105
Fish
24.09.19
✎
15:25
|
+(104) И что -68458,56?
|
|||
106
buketovav
24.09.19
✎
15:25
|
(102) нужен результат типа:
значение - 1,2 | результат - 1 час 12 минут |
|||
107
Масянька
24.09.19
✎
15:25
|
(98) Часы не имеют отношения ко времени (формат).
|
|||
108
buketovav
24.09.19
✎
15:26
|
(104) Пля. это число. которое когда-то было временем, читать же надо, уже устал повторять
|
|||
109
buketovav
24.09.19
✎
15:26
|
(107) не понял, это Вы к чему?
|
|||
110
buketovav
24.09.19
✎
15:27
|
(107) аа, да я знаю. это убрал уже
|
|||
111
Вафель
24.09.19
✎
15:27
|
(106)
|
|||
112
Fish
24.09.19
✎
15:27
|
(108) Тогда вместо бреда в начале (44) пишешь:
ВсегоСекунд = ТвоеЧисло*3600. Ну а дальше оттуда выделяешь дни, часы, минуты и секунды, как и в (44) |
|||
113
Масянька
24.09.19
✎
15:28
|
(108) Чтобы не повторять - переделывай.
Храниться должно число (целое, минуты). А при выводе на экран или печать (только в этом случае!) переводить в формат времени (ну, если надо). А вот все вычисления производятся с числом (целым). |
|||
114
Salimbek
24.09.19
✎
15:28
|
(112) +100500
|
|||
115
buketovav
24.09.19
✎
15:28
|
(112) ок
|
|||
116
Вафель
24.09.19
✎
15:28
|
строка = СтрШаблон("%1 час %2 минут", х_цел, х_дроб)
|
|||
117
RomanYS
24.09.19
✎
15:28
|
(106) а если значение 100.0 то результат какой д.б.?
|
|||
118
Масянька
24.09.19
✎
15:28
|
(109) К тому. Переделывай.
Потомки не простят. |
|||
119
buketovav
24.09.19
✎
15:29
|
(113) спасиб
|
|||
120
Salimbek
24.09.19
✎
15:29
|
(117) 100 часов, видимо.
|
|||
121
buketovav
24.09.19
✎
15:29
|
(117) это 100 целых часов, результат должен быть - 4 дня сколько то часов и сколько то минут
|
|||
122
_Дайвер_
24.09.19
✎
15:36
|
ЕПАТЬ МОИ ГЛАЗА ЧУТЬ НЕ ВЫТЕКЛИ ПОКА ЧИТАЛ!
Год(<Дата>) Месяц(<Дата>) День(<Дата>) Час(<Дата>) Минута(<Дата>) Секунда(<Дата>) А дальше простое умножение на 60*60*24 = 86400, в зависимости от того что хочешь получить, или деление. Из любой даты можно получить и кол-во лет, месяцев, дней, недель, часов, минут и секунд |
|||
123
dezss
24.09.19
✎
15:36
|
ужос...
уже вторая страница... ТС не дружит со временем)))) |
|||
124
buketovav
24.09.19
✎
15:37
|
Стр.ДлительностьЧМС = "";
Если ЗначениеЗаполнено(Стр.Длительность) Тогда ВремяВСекундах = Стр.Длительность * 3600; Дней = Цел(ВремяВСекундах / 86400); Часов = Цел((ВремяВСекундах - (Дней * 86400))/60/60); МинВСекундах = ВремяВСекундах - (Дней * 86400) - (Часов * 3600); Минут = Окр(МинВСекундах / 60); ВремяПрописью = Строка(Дней) + " дн. " + Строка(Часов) + " ч. " + Строка(Минут) + " м."; Стр.ДлительностьЧМС = ВремяПрописью; КонецЕсли; |
|||
125
buketovav
24.09.19
✎
15:37
|
(123) терпение и труд )
|
|||
126
dezss
24.09.19
✎
15:37
|
Вообще неплохо было бы хранить дату выезда и дату окончания движения. А дальше все очень просто считается)
|
|||
127
buketovav
24.09.19
✎
15:38
|
(123) ну бывает, как-то раньше не приходилось такого делать
теперь все получилось ) Всем огромное спасибо! |
|||
128
buketovav
24.09.19
✎
15:39
|
(126) дело в том, что нет таких данных, все данные в программе образовались при помощи загрузки данных из внешнего файла, предыдущим не хотелось заморачиваться и они бахнули все время в число
|
|||
129
RomanYS
24.09.19
✎
15:42
|
(124)
Стр.ДлительностьЧМС = Формат('00010101' + Стр.Длительность*3600,"ДФ='д ''дн'' чч ''ч.'' мм ''м.'''"); |
|||
130
RomanYS
24.09.19
✎
15:45
|
*(129) отменяется. День лишний прибавляет, чуть длиннее правильный формат получится
|
|||
131
Serg_1960
24.09.19
✎
15:58
|
Ничего не понял, но... вариант (44) :)
МассивЧасыМинутыВыезда = СтрРазделить(ЭтотОбъект.ВремяВДвижении, ","); Если МассивЧасыМинутыВыезда.Количество() > 1 Тогда ЧасыВыезда = МассивЧасыМинутыВыезда[0]; МинутыВыезда = МассивЧасыМинутыВыезда[1]; МинутыВыезда = ?(СтрДлина(МинутыВыезда) = 1, МинутыВыезда + "0", МинутыВыезда); ВремяВыездаВСекундах = ЧасыВыезда * 60 * 60 + МинутыВыезда * 60; Дней = Цел(ВремяВыездаВСекундах / 86400); Часов = Цел((ВремяВыездаВСекундах - (Дней * 86400)) / 3600); Минут = Окр(((ВремяВыездаВСекундах - (Дней * 86400)) - (Часов * 3600)) / 60); ВремяВДвиженииПрописью = Строка(Дней) + " дн. " + Строка(Часов) + " ч. " + Строка(Минут) + " м."; КонецЕсли; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |