Точка или запятая в числах
Перейти к содержимому

Точка или запятая в числах

  • автор:

Точка или запятая в числах

Столкнулись с проблемой правил оформления «.» или «,».

С одной стороны, в ГОСТ 21.1101-2013 (например, в п. 5.4.1, 5.4.3) прямо говорится о разрядности после «,» в тексте и в последующих рисунках. Тоже самое во многих других ГОСТах.

С другой стороны, в ГОСТе 21.1101-2013 в перечне ссылок на нормативы есть ГОСТ 2.004-88, в котором в примечании к п. 1.9 написано, что допускается применение «.» как разделителя. Формально можно и так и так делать, но вопрос как правильнее?

К тому же ГОСТ 2.004-88 скорее всего был подготовлен к тем ЭВМ, у которых был ограниченный функционал настроек и на которых было проблематично настроить нужный вид. Сейчас программные комплексы позволяют как угодно настраивать и выводить чертежи и текстовые документы. Может быть есть приписки к этому ГОСТу, что он применяется, когда невозможно выполнение иначе?

В Российской Федерации для разделения целой и дробной (десятичной) частей числа принято использовать запятую.

Именно об этом написано в ГОСТ 2.307-2011 и ГОСТ Р 21.1101-2013.

ГОСТ 2.004-88 допускает использование точки в качестве разделителя, но это допущение (см. примечание к пункту 1.9) относится, если судить по примерам, к алфавитно-цифровым печатающим устройствам (АЦПУ).

Это допущение проиллюстрировано в виде примера в примечании в устаревшем стандарте при применении устройств, которые сейчас не применяются на практике. Т.е. очень «левое» допущение.

В любом случае, одновременное применение запятой и точки в качестве разделителя не допускается.

Используемые нормативные источники

  • ГОСТ Р 21.1101-2013. Система проектной документации для строительства. Основные требования к проектной и рабочей документации
  • ГОСТ 2.307-2011. Единая система конструкторской документации. Нанесение размеров и предельных отклонений

Научный форум dxdy

Последний раз редактировалось Munin 09.12.2016, 13:33, всего редактировалось 1 раз.

<img decoding=

Заслуженный участник

Munin в сообщении #1175375 писал(а):
по-русски в числах пишут десятичную запятую

По-моему, использовать запятые в качестве десятичного разделителя — это всё равно, что называть Кремниевую долину Силиконовой: правильно, но противно.

Re: как правильно выбрать погрешность, если дано только значение
09.12.2016, 16:12

Заслуженный участник

warlock66613 в сообщении #1175389 писал(а):

По-моему, использовать запятые в качестве десятичного разделителя — это всё равно, что называть Кремниевую долину Силиконовой: правильно, но противно.

Как раз Кремниевой — правильно (и мне не противно). А «Силиконовой» — грубая ошибка, поскольку перепутаны русские переводы терминов Silicon и silicone.

$\lg,\tg,\ctg,\operatorname<arc\ldots></p>
<p>А запятые в качестве десятичного разделителя — такая же национальная традиция, как ,\sh,\ch,\th,\operatorname$» /> и так далее.</p><div class='code-block code-block-3' style='margin: 8px 0; clear: both;'>
<!-- 3muzlitra -->
<script src=

Да, в более «продвинутых» и современных разделах математики и физики мы быстро заимствуем западные обозначения, но в традиционных — пока нет повода никуда сдвигаться.

Запятая относится примерно к тому же уровню нотации, где умножение обозначается ``$<>\cdot<><img decoding=#039;'» /> и ``$\div<img decoding=#039;’.» /> Вы же не хотите заменить эти знаки?

Полностью согласен, что при работе с числами на компьютере удобно всюду ставить точку — большинство программ настроено именно на неё, а исключения (типа Excel) создают только неудобства. Но это не относится к тому, чтобы написать что-то на бумаге или на форуме.

Точка, точка… запятая?

Программисты пишут программы, которые потом могут использоваться в разных странах с разными стандартами и традициями, поэтому им приходиться обращать внимание на такие детали, которые в обычной жизни не замечаются в силу своей очевидности.

Вот, например, у меня на компьютере сегодняшняя дата пишется так — 06.01.2023, а на одном из моих серверов в уголке экрана светится 01/06/23. Это американский формат, и я каждый раз мучительно вспоминаю, 01/06 это первое июня или всё таки шестое января.

Ещё одно национальное отличие — символ отделения целой и дробной части в числах. В России по традиции и в соответствии со стандартами надо отделять дробную часть запятой (Пи = 3,14), а американцы (и вслед за ними программисты) используют десятичную точку (Pi = 3.14). Из-за этого различия иногда случаются разные казусы.

В русском Excel в разделе «Сохранить как» есть формат файла «CSV (разделитель — запятая)». Если вы сохраните таблицу в этом формате, то получите текстовый файл, в котором разделителем колонок будет… Нет, не запятая, как было обещано, а точка с запятой, поскольку запятая уже занята как разделитель дробной части. Если же вы попробуете открыть «американский» CSV-файл (с разделителем запятой и десятичной точкой), скачанный из интернета, то у вас возникнет сразу несколько проблем. Во-первых, все столбцы сольются в один, поскольку не будет распознан разделитель столбцов. Это можно преодолеть, предварительно вставив в начало файла магическую строку sep=, , но тут вы нарветесь на вторую проблему — теперь ваши числа с десятичными точками будут восприняты не как числа, а как текст. В принципе, можно выделить колонки с числами и сделать во всех ячейках замену точки на запятую, но у себя я наткнулся на третью проблему — при открытии файла Excel попытался угадать формат ячеек и безвозвратно заменил небольшие числа вида «1.2» на даты — «1 февраля 2023».

Для того, чтобы упростить работу с национальными форматами, программисты разработали специальные базы данных, автоматизирующие процесс локализации программ (по-английскии кратко пишется L10N поскольку L[ocalizatio]N). На программистском жаргоне эти базы называются локалями и обозначаются либо названием языка («Русский»), либо аббревиатурой, составленной из названия языка и названия страны (en_US — американский английский). В Windows можно выбрать стандартную локаль (ищем в настройках Windows 10 слово «Регион») и (при желании) поправить отдельные ее параметры («Панель управления\Часы и регион»). В командной строке Linux локаль в целом выбирается установкой значения переменной LANG или LC_ALL, а частичные изменения настраиваются через переменные LC_NUMERIC, LC_TIME и т.д. У меня, например, в Windows отдельно настроена десятичная точка, а в Linux установлен программистский языковой стандарт для чисел LC_NUMERIC=C . В Excel в дополнительных параметрах присутствует отдельный пункт для разделителя целой и дробной частей числа — можно выбирать между разделителем из системной локали и произвольным символом, например, точкой.

А теперь примеры программистских ошибок.

В 2000-х годах в суперкомпьютерном центра МГУ эксплуатировался NUMA сервер от IBM. Сейчас не могу вспомнить, какой именно модели, поскольку в последний раз получал к нему доступ десять лет назад в 2013 году. На сервере использовался родной компилятор от IBM и этот компилятор имел замечательную ошибку. При установленной русской локали ru_RU он не мог распознать вещественные числа в программах, поскольку считал, что разделителем десятичных знаков должна быть запятая. Программы не собирались, а компилятор выдавал сообщение о недопустимом символе в позициях, в которых стояли десятичные точки. Когда моя коллега впервые наткнулась на эту ошибку у меня ушло минут 40 для того, чтобы осознать, что дело не в кодировке и не в невидимых символах в окрестности десятичных точек, а именно в локали. Ради интереса, я поменял все десятичные точки на запятые, но это не помогло: в зависимости от контекста, эти запятые интерпретировались либо как разделители параметров функции, либо как оператор «запятая», что, в общем-то, было вполне ожидаемо.

Недавно наткнулся в собственной программе на то, что при установленной русской локали вывод вещественных чисел в C++ двумя разными способами дает разные результаты:

#include #include #include #include int main(int argc, char *argv[])< float pi=3.14; // Укажем, что мы хотим форматировать числа, даты, валюты и пр. // по правилам русского языка setlocale(LC_ALL, "Russian"); // libc по умолчанию использует пользовательские настройки printf(«%f\n», pi); // 3,14 // Стандартные потоки по умолчанию используют локаль POSIX std::cout блоге у Евгения Степанищева на ещё один интересный пример, на этот раз из ранних версий PHP4, и решил, что пора писать обобщающий материал. Хотя бы для того, чтобы обратить на эту проблему внимание начинающих программистов.


Пример от Евгения (можно поиграться в песочнице). Установка локали в PHP 4.2.3 влияет на конвертацию строки в число:


Точка и запятая между цифрами

Целая часть от дробной в русском языке отделяется только запятой. Однако из этого не следует, что везде в русском тексте точка между цифрами должна быть заменена запятой: нужно сначала убедиться, что перед нами именно дробь.

Номера версий программных продуктов и ай-пи-адреса не являются дробями.

44 комментария

Илья Бирман 2009

Запятой разделяются классы (у нас — полупробелы), а десятичная часть — точкой.

bes island 2009

3¼ — а вот здесь целая часть от дробной не отделяется запятой.

Илья Бирман 2009
Kalan 2009

Всегда люто и бешено ненавидел это правило и ставил точку, потому что она, во-первых, нормально смотрится, а во-вторых, используется во всех языках программирования и т. п.

Картошка, лук, редиска и морковь стоят 3,85, 4,55, 2,99 и 5,67 рублей, соответственно. Пример немного надуманный, но демонстрирует, почему запятая как разделитель дроби — это плохо.

В общем, я использую точку, зоопарк стандартов разделения дробей не нужен. Это все равно, что использовать кириллицу в формулах.

Илья Бирман 2009
bes island 2009

«Картошка, лук, редиска и морковь стоят 3,85, 4,55, 2,99 и 5,67 рублей, соответственно» — это не «немного надуманный» пример, а совершенно неестественная фраза.

Обычный человек запишет: «Картошка стоит 3,85; лук — 4,55; редиска — 2,99; а морковь — 5,67»; или вовсе оформит это таблицей.

Роман 2009

Все и так в курсе. В чем смысл поста?

Павел Малинников 2009

а кто их посчитал дробями?

somniator 2009

«Картошка стоит 3,85; лук — 4,55; редиска — 2,99; а морковь — 5,67» — Вам пришлось использовать точку с запятой, потому что запятых получается слишком много для комфортного чтения. Это недостаток запятой в качестве разделителя целой и дробной части.

bes island 2009

А Вам «пришлось использовать» тире и точки. И запятую перед «потому что». Потому что если их не использовать, чтение получается некомформтным. Вот такой вот недостаток.

somniator 2009

2 bes island: Я использовал тире, точки и запятую согласно правилам русского языка. А Вы какими правилами руководствовались?

Георгий Тудоси 2009

Никогда не понимал, почему в русском языке не используется десятичная точка. Ведь цифры — это алфавит математики, а точка, +, − и прочие символы — это ее пунктуация. А математика не делится на «русскую» и всю остальную. Поэтому я считаю использование так называемой десятичной запятой нонсенсом.

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

Георгий Тудоси 2009

Почему, кстати, символ «−» нормально не отображается?

Илья Бирман 2009

Потому, что в комментариях не поддерживается ХТМЛ, о чём написано для тупых.

bes island 2009

somniator, ими же.

Илья, а я пытался вставить дробь как символ, но всё равно вышел код 188.

Илья Бирман 2009

То, что у меня не поддерживается и УТФ-8 — тоже не новость. Допишу Эгею — будет.

У меня уже ощущение, что люди специально экзотические символы пихают, лишь бы лишний раз напомнить мне, что у меня нет УТФ-8.

bes island 2009

Странно слышать об «экзотических символах» от создателя раскладки своего имени.

Илья Бирман 2009

Что же за тупняк-то такой глобальный? Движок я писал в 2004 году. Я тогда даже не знал про УТФ-8 вообще. Мне нельзя было выпускать раскладку до того, как я перепишу e2? Это не единственное место, используйте раскладку в других местах.

ИМХО 999.99 р. смотрится симпатичнее 999,99 р.
А уж разделять запятыми классы — такой бред я встречал один раз в жизни на жестко-китайском калькуляторе с музыкой. Пользоваться я им так и не смог.

Георгий Тудоси 2009

Илья, специально для тупых: я нажимаю на клавиатуре Ctrl+Alt+M, чтобы получить знак «минус». Где тут HTML?

Про UTF-8 уже прочитал, так что можете не отвечать.

bes island 2009

Илья, у вас какая-то неадекватно отрицательная реакция.

Илья Бирман 2009
Тихвинский Дима (Devgru) 2009

Илья, Вы не читали Getting Real от 37signals?
Там как раз упоминается, что если какой-то функциональности в программе действительно недостаёт — пользователи будут так или иначе раз за разом напоминать об этом. Так и получается на этом блоге с UTF-8.

Илья Бирман 2009

Конечно читал. Без этой книжки разработчик профнепригоден 🙂

Вы совершенно правы, и проблема с УТФ-8 даже уже решена в моих внутренних билдах. Но там есть другие проблемы, которые пока не позволяют перейти мне тут на новьё.

Роман Добровенский 2009

Георгию Тудоси:
Вы очень сильно заблуждаетесь говоря о том, что математика стандартизированна. Например, в русской традиции принято обозначать количество сочетаний из n по k через большую букву «С», во всем же остальном мире принято обозначать сочетания так же как и матрицу 2x1 (и это оправданно, так как сочетания допускают огромное количество манипуляций со своими параметрами, в качестве которых порой выступают экстремально сложные выражения).

Рекомендую еще почитать современные французские учебники по математике — вы будете шокированы. У французов, например, число «ноль» одновременно и положительное и отрицательное, а перемножение матриц осуществляется совершенно не так как у нас (вместо умножения строк левой матрицы на столбцы правой, они умножают столбцы левой на строки правой). Это из невинного.

Или вот еще: у нас знак деления часто обозначают двоеточием. В любой западной литературе двоеточие между двумя числами может лишь показывать отношение между двумя величинами, но никак не деление (что тоже крайне разумно, так как дети с пеленок начинают манипулировать дробями — у нас же в школах приходится вводить дроби отдельно, что просто глупая трата времени).

Что касается точки как разделителя целой и дробной части, то мне по большому счету наплевать. Я все равно в основном пишу на английском [смайл, показывающий язык].

Антон Вернигор 2009

Когда пишу «для себя» (какие-нибудь заметки, например), то ставлю точку как десятичный разделитель. Для меня это привычнее, несмотря на то, что неправильно. И выглядит на мой взгляд гармоничнее.
Когда готовлю что-либо к публикации, ставлю запятые. Потому что «так надо».

Олежик 2009

Да. Ибо традиции надо блюсти.

П
ри этом нельзя не признать, что «нерусская» традиция отделять десятичные точкой гораздо практичнее.

Ярослав 2009

Георгий Тудоси, вы, вероятно, удивитесь, но десятичная запятая — не отличительный признак какой-нибудь особенной «русской» математики: она используется в большинстве стран. Десятичная точка используется только в англоговорящих странах и их бывших колониях, а также в государствах, тесно связанных с английским миром, например, в Японии и Южной Корее. Это характерная особенность именно английского языка, так что, уж простите, довольно глупо говорить о том, что использование десятичной запятой — нонсенс, и она «де-факто умерла».

СИ, тем не менее, разрешает использовать или запятую, или точку по выбору, но с оговоркой «The decimal marker chosen should be that which is customary in the context concerned». Любопытно, что в этом документе запрещается использование запятой или точки в качестве разделителя разрядов.

Саша Смирнов 2009

«Запрещается» — но не карается. И там вот ещё какой запрет:

t = 30.2 °C,
but not t = 30.2°C,
nor t = 30.2° C

(А сколько крови пролито за это. )

#4 Юрко 1 июня 2009, 20:49

Картошка, лук, редиска и морковь стоят 3,85, 4,55, 2,99 и 5,67 рублей, соответственно.

. 5,67 рубля соответственно. (Пять и 67 сотых рубля; да и «соответственно» в конце не является вводным словом.)

bes island 2009

Правда, что ли, знак градуса должен отделяться от числа?

Илья Бирман 2009

Знак градуса отделяться от числа не должен, точно так же, как и знаки минуты и секунды. Например: 10°. Однако знак градуса Цельсия должен отделяться от числа: 10 °C.

Георгий Тудоси 2009

От числа часто должен отделяться не только знак градуса, но и любое обозначение единицы измерения. Правило очень простое: если при написании величины словами пробел ставится, то он нужен и при написании цифрами. Поэтому, например, «концентрация раствора 15 %», но «15%-ный раствор».

Правда, в эту концепцию не вписывается «+10 °С», поскольку «плюс десять градусов Цельсия», с пробелом между градусом и Цельсием. Возможно, есть и другие исключения, но я их не знаю.

Илья Бирман 2009
bes island 2009

Мне кажется, единицей измерения здесь является «C» — градус Цельсия; а «°» — вспомогательный, несамостоятельный значок, используемый только для градусов и заменяющий обычную в других случаях шпацию.

Саша Смирнов 2009

Я только заострил «меч правды». Издательство такое дело, что чем больше однообразия (в обозначениях того же самого), тем легче всем работать.

Но обычный читатель (даже и не тупой) не часто любуется красотой значков — он черпает информацию.

Так вот: градус (°), как прочие единицы СИ, ДОЛЖЕН от цифр (указывающих число этих градусов) быть отделён — как и любое «номальное» слово. Но есть какие-то. психофизиологические, что ли. законы набора текста: вот даже умный Devgru пишет (или пускай даже берёт с солидного сайта):

Как любит говорить хозяин блога, «ау, пробел?»! Таков реал!

Илья Бирман 2009

Вы удивительно путанно излагаете, совершенно неизвестно, о чём этот комментарий.

Саша Смирнов 2009

«нормальное» (извините, не до шуточек)

Ярослав 2009

Странно, я думал, что обозначение градусов Цельсия для всех очевидно. В школе на уроках физики ведь наверняка показывали, как правильно 🙂

Ярослав 2009

bes island, а зачем строить предположения? В СИ написано: «The unit of Celsius temperature is the degree Celsius, symbol °C».

Артём Сапегин 2009

Забавно, что в Яндексе об этом не знают и новая выбиралка товаров на Маркете принимает числа только через точку.

Фёдор 2009

Кстати, если вдруг кому-то интересно, что думает товарищь Гейтс и его кодла по поводу десятичных и классовых разделителей в России и других странах, можно посмотреть тут (пишу для аглицкой ХР, для других Виндов аналогично): Control Panel -> Regional and Language Options -> Regional Options.

Для себя я обычно в тексте ставлю точку, а в таблицах запятую.

Головинов Антон 2009

Артём Сапегин, ну это только от лени программистов. Яваскрипт не понимает запятые в дробях. Что, правада, не оправдывает использование точки. У меня решение этой проблемы заняло две минуты времени и 3 строчки кода.

Денис Киселев 2009

Прочитал заметку. Не понял, зачем она: это же очевидно.

Пошел в комментарии. Сильно удивился: сколько, оказывается, людей, для которых неочевидно именно первое, вводное предложение, хотя заметка-то, в общем, говорит не о том, что надо менять точку на запятую, а о том, когда этого делать не надо.

Тихвинский Дима (Devgru) 2009

2Саша Смирнов
37signals — название конторы, имя собственное, употребляется везде именно в таком виде. Я думаю это достаточая причина чтобы пробел не ставить. Хотя, мнение Ильи по этому вопросу тоже интересно услышать.

Илья Бирман 2009

Я не испытываю большого трепета по отношению к названиям, использующим ПаскалевскуюНотацию, цифрывну3слов и прочую хрень, поэтому, например, я пишу «Айфон», а не «айФон». «37 сигналов» я пишу по-русски и, конечно, с пробелом.

Георгий Тудоси 2009

Жаль, нет возможности отвечать здесь, но конкретным людям. Илья, может быть, все-таки стоит подумать о древовидных комментариях? Люди часто хотят общаться друг с другом, а сейчас это не очень удобно. Про возможность отвечать людям по почте я знаю, если что. (Кстати, грош цена заявлению о том, что «адрес не будет опубликован», если все адреса комментаторов приходят подписавшемуся на дискуссию по почте.)

#19: Я невнятно выразился, извините. Я считаю математику универсальным языком, который должен быть стандартизован. Поскольку де-факто международным (научным) языком давно стал английский, думаю, логично привести математическую типографику (и вообще правила записи) именно к правилам, принятым в этом языке. Уверен, что преимущества от этого перевесят все трудности, связанные с процессом перехода. Хотя мне и странно писать «tan» вместо привычного «tg» (ау, знатоки, я правильно написал?), как-нибудь перестроюсь.

#22: Возможно, вы и правы, но точка используется в наиболее развитых (в отношении науки и техники) странах. Для меня это прямое указание на то, к чему следует стремиться.

#25: http://gramota.ru/biblio/public/32_8 — там вообще про пробелы много написано. И к этому сайту я привык обращаться во всех сложных случаях, когда не уверен в собственной правоте.

#31, 32, 33: А вот в продуктах Adobe можно ставить в качестве десятичного разделителя запятую. Она корректно обрабатывается. и немедленно заменяется (в полях для ввода чисел, не в тексте, конечно) на точку. Очень правильное поведение, по-моему. Набирай, как привык, а написано будет, как правильно.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *