1с убрать нули в дробной части
Полазил по инету - ничего не нашел, в голову лезет только смотреть с последнего симвла и удалять, если он ноль, но ведь наверняка есть более красивый способ?
Работает только со строкой, представляющее вещественное число. С целым числом, например 100 , выдаст 1.
Если убрать лишние нули нужно на выводе, то используйте функцию printf() и sprintf() Например:
Выведет на экран только 12.12
Также стоит добавить что число округлится до заданной точности. sprintf("%.2f", 12.12945); выведет: 12.13
ну да, в этом случае лучше всего rtrim('0.100','0'); ибо явно подразумевается вывод куда-то.
Отлично, мужики. Большое спасибо :) Единственное, если в базе целое число, то выводится, например "2.", точку обрезаем в случае необходимости так: rtrim(rtrim($res->fields['z_phaze'], '0'), '.');
@Ilya Pirogov, работает только со строкой, представляющей вещественное число в интервале (-10; 10). С числом, например, 100.00 , выдаст 1 .
Эм. Что-то други мои вы надумываете великие велосипеды, есть же готовое решение round()
в голову лезет только смотреть с моследнего симвла и удалять, если он ноль
Это же просто ппц.
@alexlz >0,100 = 0,1 в вопросе стоит до 1 символа после точки. Так понятнее? А вообще я сам его написал. А кто до меня придумал цифру 1 не знаю, даже и не интересно, но пользуюсь ею :)
во первых, работа round выдаст идентичный результат sprintf.
во вторых проблемы нету:
C другой стороны если мы зададим число как строку:
Поэтому мы преобразуем строку в число и выйдет то что нам нужно:
Ну я только этим могу объяснить эту задачу. что число задается строкой / вырезается откуда то / . / но в итоге получается строка. Иначе вопроса не было бы
(float) при очень маленьких числах даст E нотацию. типа: 4.343434E-5
Всё ещё ищете ответ? Посмотрите другие вопросы с метками php или задайте свой вопрос.
Похожие
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Site design / logo © 2022 Stack Exchange Inc; user contributions licensed under cc by-sa. rev 2022.5.9.42071
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
При работе с 1С постоянно требуется выводить числа или даты в каком-либо особенном, либо просто в пристойном, виде. Для всего этого существует функция Формат(), о ней собственно и пойдет речь.
Общие сведения о функции Формат()
Если упростить, то функция Формат() позволяет превратить число, дату или булево в строку. Функция Формат() принимает два параметра:
- — это собственно то значения, которому мы хотим придать какой-либо вид, это может быть число, дата или булево. Параметр обязательный.
- — второй параметр, в котором и заключается весь смысл функции Формат(), об этом параметре поговорим более подробно.
Следует сказать, что форматная строка не является обязательным параметром, и в этом случаем функция Формат() отличается от функции Строка() только тем, что для значений по умолчанию для типов Число и Дата (0 и 01.01.0001 00:00:00 соответственно) функция Формат() вернет пустую строку.
В остальных же случаях форматная строка является строковым значением, которое состоит из одного или нескольких параметров форматирования, которые разделяются символом “;”.
Каждый параметр форматирования состоит из имени, знака “=” и значения параметра. При этом значение параметра можно указывать в одинарных или двойных кавычках, это в тех случаях, когда значение параметра содержит символы используемые в синтаксисе форматной строки (например знак “;”).
Внутри значения параметра можно использовать произвольные символы, которые будут отображаться как есть. Наиболее очевидный пример — разделители при формировании представления даты. Также можно использовать одинарные кавычки, если есть подозрение, что символ может быть неправильно воспринят.
Параметры форматирования
Л (L) — указание языка и страны для которой будет выполняться стандартное форматирование, полный список доступен в синтаксис-помощнике.
Преобразование числа в строку
ЧЦ (ND) — максимальная длина целой части числа. Исходное число при этом округляется по правилу “Окр15как20”. Если указан этот параметр, то для отображения дробной части обязательно использовать параметр «ЧДЦ» о котором ниже.
ЧДЦ (NFD) — максимальная длина дробной части числа. Исходное число при этом округляется по правилу “Окр15как20”.
ЧС (NS) — указывает сдвиг разрядов: положительный — деление, отрицательный — умножение.
ЧРД (NDS) — позволяет указать каким символом разделять целую и дробную части числа.
ЧН (NZ) — представление нулевого значения. Если параметр отсутствует, то нулевое значение будет представлено пустой строкой. Если параметр указан в виде “ЧН=”, то представлением нулевого значения будет “0”.
ЧВН (NLZ) — вывод лидирующих нулей. Параметр не имеет значения, само наличие “ЧВН=” уже свидетельствует о необходимости выводить лидирующие нули.
ЧО (NN) — представление отрицательных чисел:
- 0 (0) — строка вида «(1,1)»;
- 1 (1) — строка вида «-1,1»;
- 2 (2) — строка вида «- 1,1»;
- 3 (3) — строка вида «1,1-«;
- 4 (4) — строка вида «1,1 -«.
Преобразование даты в строку
ДФ (DF) — формат даты:
- д (d) — день месяца (цифрами) без лидирующего нуля;
- дд (dd) — день месяца (цифрами) с лидирующим нулем;
- ддд (ddd) — краткое название дня недели*;
- дддд (dddd) — полное название дня недели*;
- М (M) — номер месяца (цифрами) без лидирующего нуля;
- ММ (MM) — номер месяца (цифрами) с лидирующим нулем;
- МММ (MMM) — краткое название месяца*;
- ММММ (MMMM) — полное название месяца*;
- к (q) — номер квартала в году;
- г (y) — номер года без века и лидирующего нуля;
- гг (yy) — номер года без века с лидирующим нулем;
- гггг (yyyy) — номер года с веком;
- ч (h) — час в 12 часовом варианте без лидирующих нулей;
- чч (hh) — час в 12 часовом варианте с лидирующим нулем;
- Ч (H) — час в 24 часовом варианте без лидирующих нулей;
- ЧЧ (HH) — час в 24 часовом варианте с лидирующим нулем;
- м (m) — минута без лидирующего нуля;
- мм (mm) — минута с лидирующим нулем;
- с (s) — секунда без лидирующего нуля;
- сс (ss) — секунда с лидирующим нулем;
- вв (tt) — отображение половины дня AM/PM (действительно только для языков конфигурирования, поддерживающих 12 часовой вариант представления времени).
* — не используется для форматной строки поля ввода даты.
ДЛФ (DLF) — локальный формат даты. Указывается вариант отображения частей даты:
- Д (D) — дата (цифрами);
- ДД (DD) — длинная дата (месяц прописью);
- В (T) — полное время, дата может объединяться со временем;
- ДВ (DT) — дата время.
ДП (DE) — представление пустой даты.
Преобразование булево в строку
БЛ (BF) — представление логического значения Ложь.
БИ (BT) — представление логического значения Истина.
Типовые задачи представления данных
Число без пробелов
Дата без времени
А также еще множество вариантов.
Месяц прописью из даты
Если Вы нашли ошибку или неточность, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
(оценок: 3, средняя оценка: 5,00 из 5)
Использую при выводе таблицы: Можно ли убирать нули из дробной части, если дробной части нету? Т.Е, вместо "0,00" выводить "0"?
это как? во-первых, мне нужно сразу применить формат ко всей таблице, во-вторых, округление нужно до сотых, если дробная часть есть.
а вообще, тупо отмена форматирования вообще и при выводе все числовые значения делать через Окр и привет..
В каждой из этой ячеек стоит свое уникальное выражение, к каждому тогда придется применять еще какую-то формулу. Чтобы обработать 1400 ячеек, время придется потратить немало.
ну ты же потратил ужо его, забивая выражения в ячейках ? Данные для выражений же находятся в модуле формы, не так ли ? Там и правь. нафик тебе в таблицу лезть руками.. не вкурю..
Ответ никак устроит ? И покажи-ка код формирования этого чуда.. Не верю я в 1400 переменных для его формирования.
Отчет бюджет, 20 подразделений, 70 статей издержек (в т.ч. сводные показатели). Формат отчета фиксированный, т.е., всегда именно 70 строк. Стало быть, в каждой ячейке - уникальное выражение. Хочешь верь, хочешь не верь))
можно и так, была такая идея, просто думал, может в функции Формат есть такая возможность, так было бы проще
дык это чистая правда, зачем бы мне спрашивать, если бы все было так просто? Кстати, код отрабатывает быстро, формируется мухой))
и чего, хочешь сказать, что ВСЁ это не делается через вывестисекцию-ПрисоединитьСекцию, т.е динамически ? Не верю.
извращение какое-то. Не верю всё равно в НеВозможность создания такой таблички динамически, без 1400 переменных.
> и чего, хочешь сказать, что ВСЁ это не делается через вывестисекцию Не верю. - Распишу задачу поподробнее, может быть кто предложит более оптимальный и менее трудоемкий алгоритм решения. В чем я правда сильно сомневаюсь, но попытка не пытка)) Итак, есть выборка данных в виде: «Подразделение - статья затрат - сумма», отсортированная по подразделениям и статьям. Требуется вывести данные в таблицу фиксированного формата. Например: ---------------------------------------------------------------------- Подразд1 Подразд2 Подразд3 Пордразд4 Подразд5 Статья1 Статья2 Статья3 Статья4 Статья5 ----------------------------------------------------------------------- Данные от месяца к месяцу могут меняться, т.е., какие-то статьи или подразделения могут быть или не быть. Но структура выходной таблицы остается именно такой. Как это можно сделать через «Вывести секцию-присоединить секцию», чтобы написание алгоритма было менее трудоемким и можно было обойтись без большого количества переменных?
Ё.. Завести ОДНУ вертикальную секцию и 2 горизонтальных в макете и ВСЁ: "Заголовок" "Шапка" | ПечСтатья | "Строка" | ПечПоказатель| Всё.. Далее вывод через ВывестиСекцию + ПрисоединитьСекцию
ты пишешь о технике вывода таблицы, а говорю про алгоритм вывода данных в принципе, чтобы все это не обернулось в итоге еще больши гемороем, чем через переменные. Алгоритм можешь преложить примерный?
ТабДанных - сврёрнута по статье и подразделнию, имеетются общие списки статей и подразделений Вывод Шапки. Для А = 1 По ОбщийСписокСтатей.РазмерСписка Цикл Вывод первого столбца таблицы с именем статьи Для Б = 1 По ОбщийСписокПодразделений.РазмерСписка Цикл Присоединение столбца таблицы с суммой нужного подразделения КонецЦикла; Вывод подвала таблицы
+ Ну я там накосячил слегка (7.7 это так давно было!), цикл не закрыл, подразделение неверно присвоил, но суть понятна.
Ха! На первый взгляд.. Знал бы ты сколько собак на этом съедено. Вообще, уже на уровне формирования выборки надо думать о его выводе. Приведённый алгоритм - это решение в лоб, не оптимальное (потому как перебор лишних данных присутствует при поиске подразделений). Я обычно делал вложенные ТЗ, при формировании выборки закладывал наличие всех возможных вариантов и т.д. и т.п.
Часто при разработке печатных форм или отчетов, нужно номера документов вида 000001 преобразовать в 1 - убрав лидирующие нули. в этой статье я приведу несколько способов, а какой выбрать - решайте сами:
Код 1C v 8.х Код 1C v 8.х
Код 1C v 8.х Код 1C v 8.х
Похожие FAQ
1С 8.x : Как убрать лидирующие нули в номере Документа (вариант2) 0
Скопировать строку с номером, с лидирующими нулями, в числовом поле (с форматом без групп, без группировки), и вернуть(скопировать) обратно в строковом поле с номером. Возвращает без нулей. Как добавить нули к значению или строке в 1С 0
Функция ДобавитьНули(Значение, НужнаяДлинаЗначения) Значение = СтрЗаменить(Формат(Значение, " ЧГ=" ), " " , " " ); НадоНулей = НужнаяДлинаЗначения - СтрДлина(Значение); ВедущиеНули = Формат(0," ЧЦ=" +НадоНулей+" ;ЧН=; ЧВН=; ЧГ=0" ); Возврат Как дополнить число лидирующими нулями (000851) ? 13
Необходимо, чтобы из числа 7 получалось 0007, из 851 получалось 000851 и т. д. Для этого можно использовать функцию встроенного языка Формат(). Например: ИсходноеЧисло = 13; Результат = Формат(ИсходноеЧисло, " ЧЦ=5; ЧВН=; ЧГ=0" ); //Результа Как разделить текстовый файл на несколько файлов определенного размера? 0
Бывает необходимо разделить текстовый файл большого размера на несколько маленьких файлов. Ниже представлены функции при помощи которых можно разделить файл : РазделитьФайл( ИмяФайла , РазмерЧасти , Путь ) Разделяет указанный файл на несколько Настройка веб-клиента 1С:Предприятие 8.2 под Windows 7 x64 и IIS 0
Возникла необходимость отладить небольшую конфигурацию 1С:Предприятие 8.2 под веб-клиентом. Веб сервером был выбран IIS, являющийся самым родным для ОС Windows. Опыт использования этого сервера в Windows XP подсказывал, что с ним будет меньше проблем Посмотреть все результаты поиска похожих
Еще в этой же категории
Необходимо, чтобы из числа 7 получалось 0007, из 851 получалось 000851 и т. д.
Для этого можно использовать функцию встроенного языка Формат().
Например:
Код 1C v 8.х
Здесь в форматной строке указано три параметра:
- ЧЦ=5 - всего будет отображаться пять знаков (целой и дробной части)
- ЧВН= - будут выводиться лидирующие нули
- ЧГ=0 - группировка разрядов использоваться не будет
Похожие FAQ
10060 (0x0000274C): Попытка установить соединение была безуспешной 19
Установили новый терминальный сервер, на нем подняли 1С, терминальные пользователе неописуемо довольны, все просто летает :) И вот же надо было такому случиться, главному бухгалтеру не понравилось работать через терминал, а еще у нее свой ноутбук и 17 правил для составления оптимального ЗАПРОСа к данным базы 1С 44
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ 1C и Google Maps 21
была поставлена задача отображения на географической карте медицинских учреждений. После обзора предлагаемых решений был выбран сервис google. Но так же подобного рода подход будет работать и с картами сервиса yandex. Во время решения задачи было реш 1C медленно работает по сети с базой на SQL Server 20
Данное обстоятельство может быть обусловлено многими причинами. Одна из них - неоптимальная настройка MS SQL . Перечислим неоптимальности в настройке: 1) Неправильно указанный сетевой протокол, используемый для взаимодействия 1С с SQL Server. П 1C: Enterprise Development Tools 50
И вот случилось долгожданное: Вышел 1C: Enterprise Development Tools - это среда для разработки конфигурации в IDE Eclipse. С сайта 1С: « 1C:Enterprise Development Tools » – это инструмент нового поколения для разработчиков бизнес-приложений систем Посмотреть все результаты поиска похожих
Еще в этой же категории
Ключевые слова и Изображения
Слова упорядочены по частоте использования в тексте
Изображения
Читайте также: