Здравствуйте!
Сегодня хочу поделиться с одним наблюдением, которое поможет некоторым программистам, использующих математические функции в проектах для .NET Framework.
В составе класса System.Math есть методы Sinh, Cosh и Tanh, которые возвращают гиперболические синус, косинус и тангенс соответственно. Если вы посмотрите в справочной системе, то увидите, что данные методы поддерживаются, начиная с CF 1.0. Но так ли это на самом деле? Давайте попробуем проверить эти утверждения. Запустим новый проект для мобильных устройств и введем простой код для кнопки:
textBox1.Text = Math.Sinh(1.2).ToString();
Редактор кода не будет возражать против данной строчки и даже будет выводить подсказку во время ввода. Теперь запустим проект. Пока все идет хорошо, программа прекрасно компилируется и запускается в эмуляторе или на реальном устройстве. Теперь попробуем нажать на кнопку. Вуаля! Вылетает сообщение об ошибке NotSupportedException.
К счастью, не все так страшно. Эти методы легко создать самостоятельно.
double angle = 1.2;
// sinh(double angle): (e^x - e^-x) / 2
double res = (Math.Exp(angle) - Math.Exp(-angle)) / 2.0;
// cosh(double angle): (e^x + e^-x) / 2
res = (Math.Exp(angle) + Math.Exp(-angle)) / 2.0;
// tanh(double angle): sinh / cosh
res = (Math.Exp(angle) - Math.Exp(-angle)) /
(Math.Exp(angle) + Math.Exp(-angle));
Сам я не математик и вряд ли мне придется использовать гиперболические синусы (я даже не знаю, что это такое), но, возможно, кто-то из читателей нарвется на эту неприятность. Отсюда вывод - не относитесь к справке MSDN как к догме.
Данный совет будет помещен на страницу Вопрос+ответ=совет
Счастливого вам программирования!
Комментариев нет:
Отправить комментарий