Разделитель групп разрядов из ОС

Автор concept.ru, 17 апреля 2017, 05:15

0 Пользователи и 1 гость просматривают эту тему.

concept.ru

Есть возможность установить пробел разделителем групп разрядов числа.
А есть ли возможность установить:
1. разделитель групп разрядов из ОС?
2. свой разделитель групп разрядов? Можно создать свой формат, конечно, например, #'###,00;[RED]-#'###,00, но тогда апостроф, который мне нужен разделителем групп разрядов, становится перед всеми числами, например, '12,34.
И вопрос из любопытства:
3. Что за числовой формат # ##0,00, и чем он отличается от # ###,00?
Apache OpenOffice 4.1.3 на W10/64.

mikekaganski

1. Нет
2. Нет
Обоснование: разделитель разрядов - не пробел, а символ, установленный разделителем разрядов в Офисе для языка, выбранного для ячейки. Язык может быть установлен автоматически (по настройкам ОС), но символы будут вся равно взяты из ЛО для этого языка.
3. Будет ли показан ноль перед запятой.
С уважением,
Михаил Каганский

concept.ru

1,2. Жаль. Нет в мире совершенства. Только было собрался переходить на ОО, а тут такое препятствие. Придётся возвращаться к 2013.
3. Если это был вопрос, то ответ: нет, никаких нулей вместо цифры перед зпт, что ожидаемо. Загадочный формат.

mikekaganski

3- Нет, это был не вопрос. Это был ответ. Разница между форматами в том, будет ли показан ноль перед десятичным разделителем. Не "будет ли заменена цифра на ноль", а "если число между 1 и 0, показывать ли ноль перед запятой."
Ноль в коде означает - обязательно писать цифру в этом месте. Решётка означает "ставить число только если оно значимо (т.е., оно не ноль, либо есть старшие значимые разряды)".

Первый вариант для 0,018 даст 0,02, а второй - ,02.
С уважением,
Михаил Каганский

concept.ru


economist

#5
concept.ru - если нужно позарез форматировать вывод чисел "как в 1С", типа 123'456,00 или 123,456.00 - можно написать на StarBasic функцию. Но вообще пробел как разделитель триад - абсолютно прекрасненько смотрится.
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

mikekaganski

Если нужно форматировать именно так, то не нужно придумывать макросы, лучше выбрать для ячеек локаль с соответствующими разделителями.
С уважением,
Михаил Каганский

Billy Bons

Цитата: mikekaganski от 17 апреля 2017, 05:39Язык может быть установлен автоматически (по настройкам ОС), но символы будут вся равно взяты из ЛО для этого языка.
А можно как-то редактировать ЛО языка? Эти настройки наверняка в каких-то файлах хранятся?

mikekaganski

#8
Цитата: Billy Bons от 17 апреля 2017, 13:02
Цитата: mikekaganski от 17 апреля 2017, 05:39Язык может быть установлен автоматически (по настройкам ОС), но символы будут вся равно взяты из ЛО для этого языка.
А можно как-то редактировать ЛО языка? Эти настройки наверняка в каких-то файлах хранятся?

Виноват, написал неясно, да ещё и вне контекста. Я писал про LibreOffice (ЛО), хотя вопрос был про ОО. Но суть от этого не меняется.

Это компилируется в бинарный код. В ЛО, например, это находится в исходном файле i18npool/source/localedata/data/ru_RU.xml, который преобразуется в промежуточный компилируемый код workdir/CustomTarget/i18npool/localedata/localedata_ru_RU.cxx. Так что, конечно, изменить можно, но только перекомпиляцией или HEX-редактором :)
С уважением,
Михаил Каганский

Billy Bons

Цитата: mikekaganski от 17 апреля 2017, 11:21Виноват, написал неясно, да ещё и вне контекста. Я писал про LibreOffice (ЛО), хотя вопрос был про ОО. Но суть от этого не меняется.
Забавно, я воспринял ЛО, как своеобразное сокращение слова "локаль". :)

Цитата: mikekaganski от 17 апреля 2017, 11:21Это компилируется в бинарный код. В ЛО, например, это находится в исходных файлах workdir/CustomTarget/i18npool/localedata/localedata_ru_RU.cxx. Так что, конечно, изменить можно, но только перекомпиляцией или HEX-редактором
Печально. :( Вообще, конечно, странноватое решение - жестко забивать настройки в исполняемый код.

Спасибо за ответ!

mikekaganski

Не, не странное. Это не настройки, а данные о известных языках.
Другое дело, что было бы здорово, если бы была настройка использования системных параметров для языка "по умолчанию" (т.е. системного). Например, для десятичного разделителя такая настройка есть (см. в языковых настройках). Так что предложения по улучшению в багзиллу приветствуются :)
С уважением,
Михаил Каганский

concept.ru

economist,
Цитата: economist от 17 апреля 2017, 10:46можно написать на StarBasic функцию
– после макроса видно будет то, что нужно. Но число станет текстом, ха-ха-ха.

Цитата: economist от 17 апреля 2017, 10:46пробел как разделитель триад - абсолютно прекрасненко смотрится
–  только нужно уметь объяснить желающему, что его желание неправильное. Мол, не выпендривайся, будь, как все, не требуй сделать то, чего я по каким-либо причинам делать не хочу.
Оффтоп: постоянно сталкиваюсь с подобным. И не важно, кто это, программист, которому неудобно прикручивать возможность, или строитель, которому лень включать голову. Причём дело не в деньгах. Интересно, это свойство русского менталитета или общемировое.

concept.ru

mikekaganski, что такое
Цитата: mikekaganski от 17 апреля 2017, 10:51локаль с соответствующими разделителями

mikekaganski

Например, Dutch имеет разделитель разрядов . (точка), а десятичный - , (запятая); English - наоборот , и .; French (Switzerland) - ' и .; Georgian - пробел и .

Так что для некоторых сочетаний достаточно для ячеек или их стилей (предпочтительно) выбрать соответствующий язык на вкладке числовых форматов.
С уважением,
Михаил Каганский

Billy Bons

Цитата: mikekaganski от 17 апреля 2017, 11:35Не, не странное. Это не настройки, а данные о известных языках.
Другое дело, что было бы здорово, если бы была настройка использования системных параметров для языка "по умолчанию" (т.е. системного).
Действительно, это было бы логично. Тем более, что системные настройки как раз можно редактировать.
Или, если уж OO и LO используют собственные настройки, то логично было бы дать пользователю их менять.

Цитата: mikekaganski от 17 апреля 2017, 11:35Например, для десятичного разделителя такая настройка есть (см. в языковых настройках).
Есть-то она есть, но не работает. :( У меня в настройках системы разделитель сделан точкой. Но LO всё равно тащит запятую, независимо от настройки.