Форум проекта SMath
»
SMath Studio
»
Предложения
»
Изменение приоритета унарного минуса
Статус: Advanced Member
Группы: Registered
Зарегистрирован: 19.03.2012(UTC)
Сообщений: 112
Откуда: Khabarovsk, Russia
Сказал «Спасибо»: 130 раз Поблагодарили: 33 раз в 29 постах
При использовании единиц измерения температуры столкнулся с тем, что
-31°C=-304,15К
Это происходит из-за того, что здесь минус имеет приоритет сложения/вычитания, т.е. ниже, чем у умножения, используемого для единиц измерения. Но унарный минус по сути является краткой записью выражения
-x=(-1)*x т.е. к нему можно (и в данном случае нужно) использовать приоритет умножения и порядок вычисления слева направо (левоассоциативность).
Ну, и в качестве бонуса было бы неплохо в качестве частного случая проверять температуру на значения ниже абсолютного нуля. Можно было бы вообще ввести в синтаксис определения единиц измерения опциональное определения пределов. (Update)
Предыдущее предложение, пожалуй, не обдумано. Величины с размерностью "температура" могут содержать не только значения температур, но и значения температурных градиентов, которые, естественно, могут быть выражены отрицательным числом кельвинов
Насчёт основного предложения:
1. Во всех (известных мне) языках программирования унарные плюс и минус имеют приоритет выше, чем у умножения/деления.
2. В языках программирования, имеющих оператор возведения в степень, его приоритет может быть как выше, так и ниже, чем у унарных плюса и минуса. Так, в Visual Basic приоритет ^ выше, чем у унарных (+-), а в VBScript - ниже. В случае, если приоритет возведения в степень выше, получится
-1^2=-1 Отредактировано пользователем 29 сентября 2012 г. 13:04:35(UTC)
| Причина: Не указана
С уважением, Михаил Каганский
Статус: Advanced Member
Группы: Registered
Зарегистрирован: 21.05.2009(UTC)
Сообщений: 155
Откуда: Россия, Новочеркасск
Сказал «Спасибо»: 21 раз Поблагодарили: 13 раз в 9 постах
То есть получается, что сначала к 31 прибавляется 273,15, а потом подставляется знак от первого числа?
Статус: Advanced Member
Группы: Registered
Зарегистрирован: 19.03.2012(UTC)
Сообщений: 112
Откуда: Khabarovsk, Russia
Сказал «Спасибо»: 130 раз Поблагодарили: 33 раз в 29 постах
С уважением, Михаил Каганский
Статус: Advanced Member
Группы: Registered, Advanced Member
Зарегистрирован: 03.06.2009(UTC)
Сообщений: 156
Сказал «Спасибо»: 209 раз Поблагодарили: 3 раз в 3 постах
Автор: mikekaganski При использовании единиц измерения температуры столкнулся с тем, что -31°C=-304,15К
Такая ошибка была и в Mathcad 15.
В Mathcad Prime ее исправили.
Форум проекта SMath
»
SMath Studio
»
Предложения
»
Изменение приоритета унарного минуса
Быстрый переход
Форум проекта SMath
SMath Studio
- Скачать SMath Studio
--- Архив
--- Ночные сборки
- Примеры использования
- Вопросы по использованию
- Предложения
- Ошибки
Математика
- Документы
- Алгоритмы
- Математические задачи
Общение
- О проекте
- Общение
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.