
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.75] |
![]() |
|
Страницы: (5) [1] 2 3 ... Последняя » все ( Перейти к последнему сообщению ) |
![]() |
Сообщ.
#1
,
|
|
Навеяно обсуждением в скайпе
![]() |
Сообщ.
#2
,
|
|
|
С одной стороны, удобнее другой оператор (как у того же vb есть "/" и "\"), но, уже привык к явному приведению, сишный вриант тоже не плох. Хуже, когда выполняется полноценное деление, затем приходится округлять результат - лишние операции же
![]() |
![]() |
Сообщ.
#3
,
|
|
Цитата VisualProg @ С одной стороны, удобнее другой оператор (как у того же vb есть "/" и "\"), но, уже привык к явному приведению, сишный вриант тоже не плох. Вот я тоже привык. Причём привык так, что использовал обычное деление по ошибке вместо целочисленного в питоне по-инерции после плюсов. Но когда писал на дельфи (до плюсов) - такой ошибки не делал ни разу. Что также говорит в пользу второго варианта. |
![]() |
Сообщ.
#4
,
|
|
Это вопрос не логичности, а принятой в языке системы типов.
|
![]() |
Сообщ.
#5
,
|
|
Цитата Qraizer @ Это вопрос не логичности, а принятой в языке системы типов. Почему? Что принципиально поменяется в плюсовой системе типов с вводом оператора "поделить нацело"? |
![]() |
Сообщ.
#6
,
|
|
Если язык не предназначен для мат.вычислений, пусть типы аргументов определяют тип операции (нефиг юзать магические константы). То бишь как в C
Если предназначен, то... пусть типы аргументов определяют тип операции ![]() |
![]() |
Сообщ.
#7
,
|
|
Цитата negram @ Если язык не предназначен для мат.вычислений, пусть типы аргументов определяют тип операции (нефиг юзать магические константы). То бишь как в C А причём тут магические константы? |
![]() |
Сообщ.
#8
,
|
|
Цитата OpenGL @ Ну как... в реальной жизни обычно используются переменные, уже имеющие какой-то тип. И этот самый тип предопределяет операцию. Если написал "1/2" то ну тебя нафиг А причём тут магические константы? ![]() |
![]() |
Сообщ.
#9
,
|
|
Цитата negram @ Если написал "1/2" то ну тебя нафиг А если get_foo() / get_bar()? |
![]() |
Сообщ.
#10
,
|
|
Цитата OpenGL @ ну тогда эти самые ф-ции возвращают правильный тип А если get_foo() / get_bar()? ![]() Ну а если например нужно поделить количество резидентной памяти процесса на общее, ну я готов в этом случае добавить приведение типов ![]() |
Сообщ.
#11
,
|
|
|
Я за разные операции для целочисленного и "обычного" деления. Соответственно, далее все зависит от системы типов в языке.
|
![]() |
Сообщ.
#12
,
|
|
Цитата negram @ Ну а если например нужно поделить количество резидентной памяти процесса на общее, ну я готов в этом случае добавить приведение типов Ну так это понятно. Я тоже готов ![]() |
Сообщ.
#13
,
|
|
|
Цитата OpenGL @ целочисленное деление. С точки зрения математики эта операция полный бред. Программисты конечно могут позволить себе вольности, но есть же предел. Для операции a/b надо a,b преобразовать как минимум в рациональное число и соответственно результат будет такого же типа. Ну дальше можете из результата получить целое число, если вам погрешность округления не важна. |
![]() |
Сообщ.
#14
,
|
|
Цитата OpenGL @ я считаю правильнее использовать всегда целочисленную арифметику, тк она точна (ну, с поправкой на возможные переполнения) и в большенстве случаев её хватает, а плавточка существует не от хорошей жизни и черевата бОльшим количеством подводных камней. Ну, в довесок раньше она была быстрее (ща не думаю, к тому же это мелочь). А вот вводить отдельную операцию для нецелочисленного деления мне кажется странно Вопрос же не в этом, а в том, почему приведение типов ты считаешь логичным (и, следовательно, более простым с т.з. программиста), нежели введение отдельной операции? ![]() Соответственно, переходить на вещественные числа следует только, когда это действительно необходимо (вот при мат вычислениях это как-раз практически всегда требуется, поэтому то, что в R по-дефолту именно нецелочисленная арифметика -- это правильно). Добавлено Цитата Pavlovsky @ да ладно Цитата OpenGL @ целочисленное деление. С точки зрения математики эта операция полный бред. ![]() Добавлено Цитата Pavlovsky @ даже если не вспоминать что такое рациональное число... Зачем делать три операции вместо одной, да ещё и гонять данные из одного представления в другое? Для операции a/b надо a,b преобразовать как минимум в рациональное число и соответственно результат будет такого же типа. Ну дальше можете из результата получить целое число, если вам погрешность округления не важна. |
![]() |
Сообщ.
#15
,
|
|
Цитата OpenGL @ Вопрос влияния новой операции на систему типов языка некорректен. В нём попутаны местами причина и следствие. Наоборот, отсутствие такой операции является следствием свойств системы типов в C. Поэтому вопрос следовало бы задать в форме "как нужно изменить систему типов, чтобы такая операция была оправдана". Почему? Что принципиально поменяется в плюсовой системе типов с вводом оператора "поделить нацело"? Добавлено Хотя я могу себе представить Палькальное поведение, где мы имеем две разные операции для вещественного и целочисленного деления, но каждая из них неприменима для операндов неверного типа. |