LINUX.ORG.RU

Почему в с++ нет типа данных процент?

 


0

1

Вот в математике есть проценты а у нас нет. За что такое? Вот сколько же в технике эти проценты используются. Еще бы контроль типов. Хочу мощность прибора установить, а меня компилятора азазакает, типа int ф-ия int принимает, а должна бы % при желании так что давай, создавай из int с проверкой что ты мощность лазера в 200% не влепишь.


То есть в твоем представлении тип «процент» не должен был бы превышать значение «100», правильно?

thesis ★★★★★
()

напиши свой тип процент.

Обычно в программировании пишутся свои функции и структуры данных.

Это только в скриптухе вызывают готовые функции сделанные программистами.

fsb4000 ★★★★★
()

Во-первых, твоя проблема решена в языках, где можно задавать диапазоны для пользовательских типов. Например, в Pascal.

Во-вторых, тебе нужны проверки в runtime или в compile time? Первое в плюсах реализовать можно с помощью класса-обёртки над int (при отсутствии виртуальных методов и передаче его экземпляров по значению, никакого оверхеда не будет, в этом и мощь плюсов), который в конструкторе проверяет диапазон. Второе это уже из области формальной верификации алгоритмов и является весьма нетривиальной задачей, потому что эти самые твои проценты могут появляться в результате других вычислений, в результате пользовательского ввода и т. д. И проверить, что никак не случился выход за границу не утыкивая код if непросто. Можешь поиграться с каким-нибудь статическим анализатором. Например, FramaC, там можно утыкать код аннотациями с предусловиеми и постусловиями, а он тебе попытается сказать, выполняются они или нет.

В-третьих, плюсую ораторов, которые говорят, что максимальное число процентов зависит от контекста. Легко представить себе и больше 100% и даже меньше 0. Самый банальный пример «отток мозгов из страны увеличился на 200%» и «зарплаты показали отрицательный рост на 25%».

KivApple ★★★★★
()
Последнее исправление: KivApple (всего исправлений: 4)

Нету потому что процент это не тип, а форма записи.

0.2 и 20% эквивалентны. Следовательно тебе нужен float.

anonymous
()

в математике есть проценты а у нас нет

За столько лет и не знал что 0.0 - 1.0 в крестах отсутсутсвуют... Вот это новость!

создавай из int с проверкой что ты мощность лазера в 200% не влепишь

При чем тут int? И что мешает существовать 158%? Два с половиной яблока это не 250%?! Вот же новость!

erfea ★★★★★
()

В математике нет процентов. Проценты - изобретение экономистов чтобы путать мозги. В математике для этого используют значения в диапазоне от 0 до 1. А проценты - извращение и кощунство.

peregrine ★★★★★
()
Ответ на: комментарий от da17

То есть ты не видишь случаев, когда тип «процент» уверенно вылезает за рамки сотни? Например «опорос свиноматок утроился в сравнении с прошлым годом»?

thesis ★★★★★
()
Ответ на: комментарий от erfea

тем не менее, есть всякие std::ratio

anonymous
()

инструмент надо выбирать исходя из требований, может вам не с++ надо, а майкрософт эксель?

Keltir
()
Ответ на: комментарий от Keltir

майкрософт эксель?

Чушь! Фортран никто не отменял!

anonymous
()
Ответ на: комментарий от da17

Вижу

Ты хотя бы внятно описать его могёшь?! Пока что бред какой то из тебя лезет!

anonymous
()

еще тип «рубль» надо ввести. что понятно было в чем деньги в переменной лежат!

вообще-то в математике нет процентов.

alysnix ★★★
()
Ответ на: комментарий от alysnix

что понятно было в чем деньги в переменной лежат

fixed: чтобы понятно было где деньги лежат

anonymous
()
Ответ на: комментарий от alysnix

вообще-то в математике нет процентов

Ты сейчас прям как те люди в твоей теме про документацию, обсуждающие как удобно лепить в техе ФОРМУЛЫ ДЛЯ НАУКИ (о которых вообще никто даже не заикался).

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

thesis ★★★★★
()
Последнее исправление: thesis (всего исправлений: 1)

Если тебе очень нужен такой тип данных, то добавить не составит труда.

anonymous
()
Ответ на: комментарий от thesis

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

alysnix ★★★
()
Ответ на: Ну дык! от Moisha_Liberman

Что мешает создать для своих задач класс Currency или Procent и их использовать?

Я и сам не понимаю.

thesis ★★★★★
()

Так напиши, в чем проблема то

cobold ★★★★★
()

Вот в физике есть ньютоны и джоули, а в С++ нет! За что такое? Давайте добавим по типу данных на все единицы измерения СИ!

qtm ★★★
()
Последнее исправление: qtm (всего исправлений: 1)
Ответ на: Ну дык! от Moisha_Liberman

Что мешает создать для своих задач класс Currency или Procent и их использовать?

Можно даже для них пользовательские литералы объвить, для большего сходства с встроенными типами. «%» правда не получится использовать

annulen ★★★★★
()

Почему в с++ нет типа данных процент?

потому что с++ не должен думать за тебя.

ps:

в cpp нет даже строк... какие проценты.

jo_b1ack ★★★★★
()
Последнее исправление: jo_b1ack (всего исправлений: 1)
Ответ на: комментарий от da17

в самом языке типа string нет, как и твоего процента, и никому это не мешает.

jo_b1ack ★★★★★
()

из int с проверкой что ты мощность лазера в 200% не влепишь

dependent type, это уже не в сторону плюсов и production ready-языков для этого немного нет. Можно смотреть в сторону f*/idris/agda.

x3al ★★★★★
()
Ответ на: комментарий от thesis

Дык...

Вот и мне тоже неясно нафига в стандартные типа тащить всё что ни попадя. От этого синтаксического сахара и так уже у стандарта С++ синтаксический диабет начался, а тут ещё и прОценты в стандарте хотят…

Moisha_Liberman ★★
()
Ответ на: комментарий от annulen

В том-то и дело что можно!

Можно даже для них пользовательские литералы объвить, для большего сходства с встроенными типами. «%» правда не получится использовать

Да! Собственно, почему бы программисту самому не расширить используемый им язык в рамках требуемой ему (этому самому программисту) предметной области? Я бы так и сделал – написал бы себе классы, свёл бы их для удобства в разделяемую библиотеку и поставлял бы её вместе со своим кодом.

В стандарт-то зачем это всё тянуть, не понимаю. Ну максимум что – можно выложить в паблик, пусть пользуются кому надо и если надо.

Moisha_Liberman ★★
()
Ответ на: комментарий от goingUp

Ой.

Но я все равно не понимаю этого «в математике нет процентов». Меня им на уроке математики учили в школе.

thesis ★★★★★
()
Последнее исправление: thesis (всего исправлений: 1)
Ответ на: комментарий от da17

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

thesis ★★★★★
()
Последнее исправление: thesis (всего исправлений: 1)
Ответ на: комментарий от qtm

Отдельный класс для метров, отдельный для футов. Помнится, была какая-то катастрофа у НАСА из-за того, что один из субподрядчиков считал в футах, когда остальные в метрах. А вот захардкодили бы теорию размерностей в систему типов – глядишь и вывезло бы.

dimgel ★★★★★
()
Ответ на: комментарий от dimgel

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

AntonI ★★★★★
()

В математике нет процентов

anonymous
()

В common lisp есть типы вроде (single-float 0.0 100.0). Это то, что тебе нужно

anonymous
()
Ответ на: комментарий от tz4678

ну это 19.9999999999….% хз я привык что 1.00 это 100 процентов, а градусы в радианах задаются

tz4678 ★★
()

Потому что ты его не написал и не протолкнул через комитет в следующий стандарт.

Harald ★★★★★
()

Жесть, просто жесть. Как, как? Ну как человечество дошло до этого?

Тип «процент» блин. Откуда вообще берутся такие люди?

fernandos ★★★
()

а где он есть?

anonymous
()

процент

тип данных

А, то есть ты из тех людей, кто не знает, что если на дорогах за отчётный период сбили 200% детей, то это не каждого по разу, а всего двух оболтусов? Прикольно, они существуют.

Осталось вместо 100 выбрать удобное компьютерам число и вдруг ВНЕЗАПНО,э получится обычный unsigned, который идёт от 0 до SOMETHING_MAX с 2^много доступных значений. Применяется везде где только можно, например координаты моих нажатий на дисплей при наборе этого коммента приятно представлять в линуксовом стеке ввода именно так. «В математике» уровня процентов уже должно быть рассказано, как с таким работать.

t184256 ★★★★★
()

Вот в математике есть проценты а у нас нет.

В какой это мат-ке есть проценты?

vtVitus ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.