Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 25.02.2016
Сообщений: 4
1

Зачем в целом числе писать вещественную часть при расчете триганометрических функций в библиотеке math.h

09.12.2016, 12:01. Показов 1139. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток. В чем собственно петрушка. При расчете функции наткнулся на ошибку вычислений. В результате было обнаружено следующее. sin(13/2) дает значение (-0.28), что не совсем правильно, но когда выделил вещественную часть, тобеж sin(13.0/2.0) получил адекватное значение (0.21). Хотел бы поинтересоваться, почему так получается, и все ли функции, которые я использую из библиотеки math должны иметь только вещественные члены для точных расчетов?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.12.2016, 12:01
Ответы с готовыми решениями:

В длинном целом числе N числе поменять байты в зеркальном порядке
В длинном целом числе N числе поменять байты в зеркальном порядке. используя только библиотеку <stdio.h>

В данном целом числе N, заменить нулями все цифры стоящие на нечетных позициях в числе
В данном целом числе N, заменить нулями все цифры стоящие на нечетных позициях в числе.

При заданном целом числе и введённым с клавиатуры целым числом вычислить произведение этих чисел
При заданном целом числе и введённым с клавиатуры целым числом вычислить произведение этих чисел с использованием цикла предусловия...

4
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
09.12.2016, 12:14 2
Лучший ответ Сообщение было отмечено fatalict как решение

Решение

Цитата Сообщение от fatalict Посмотреть сообщение
почему так получается
Ибо 13/2=6 т.к. при делении целых операндов получается целый результат, при этом дробная часть отбрасывается, а при делении вещественных операндов получаем вещественный результат, т.е. 13.0/2.0=6.5
1
 Аватар для meJevin
161 / 153 / 92
Регистрация: 18.11.2015
Сообщений: 677
09.12.2016, 12:18 3
Лучший ответ Сообщение было отмечено fatalict как решение

Решение

fatalict, Даценд сказал достаточно. Но вот еще. Ты просто кидаешь в аргументы литералы типа int, когда пишешь sin(13/2), а при записи sin(13.0/2.0) ты кидаешь ему литералы типа double. Переменные типа int тебе при делении никак не дадут дробную часть, они её выкидывают. А вот double её сохраняют и ты получаешь верный результат.
1
Диссидент
Эксперт C
 Аватар для Байт
27710 / 17328 / 3810
Регистрация: 24.12.2010
Сообщений: 38,979
09.12.2016, 12:20 4
Лучший ответ Сообщение было отмечено fatalict как решение

Решение

fatalict, Очень хороший, прямо замечательный вопрос!
Основная твоя ошибка, что ты не видишь, что 13/2 = 6. Да, не шесть с половиной, а именно 6.
И куда деваться компилятору? Он видит целое число 13. Видит целое число 2. И делит их как целые числа, т.е. с отбрасыванием остатка. Стоит тебе написать 13.0/2 (double)13/2 или что-то иное, дающее компилятору понять, что мы собираемся работать с действительными числами.
Писать же
C++
1
2
3
#include <math.h>
...
sin(6);
Можно. Транслятор догадается. И переведет целую шестерку в double.
1
0 / 0 / 0
Регистрация: 25.02.2016
Сообщений: 4
09.12.2016, 12:28  [ТС] 5
А я даже читал про это.... Даже стыдно сейчас стало за такой вопрос .... Всем спасибо большое=)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.12.2016, 12:28
Помогаю со студенческими работами здесь

Зачем в .NET в 2014 г. строгая типизация? Зачем нужно писать Convert.ToInt32(), ToString(), Int32.Parse()?
По поводу преобразования. Современный препроцессор кода сам определяет, что куда преобразовывать. Если в функцию, принимающую строку,...

double функции в библиотеке math.h
Коллеги, помогите, пожалуйста, разобраться в следующей проблеме. См. прикрепленный файл. Почему функции из библиотеки math.h не...

VC++6.0/ATL - ошибка сборки в режиме Release при исп.функций из math.h
В проекте созданным ATL COM AppWizard обязательно без поддержки MFC при использовании функций, объявленных в math.h, например, sqrt(),...

Определите функции: nd(n) - вычисляющую количество цифр в числе; d (n,k) - вычисляющую k цифру справа в целом числе
Дано натуральное число k. Напечатать k - цифру в последовательности 11235813213455.... в которой Bыписаны все числа Фибоначчи. (Определите...

Компонент textBox обрезает вещественную часть
Итак имеется форма на которой установлены следующие компоненты: textBox1 - в него сливаем полученный цыферь; textBox2 - в него сливаем...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Новые блоги и статьи
Что нового в C# 14
UnmanagedCoder 10.03.2025
Предстоящая версия C# 14 обещает принести изменения, которые сделают разработку еще более приятной и эффективной. Что стоит отметить, так это влияние сообщества разработчиков на формирование новых. . .
Формулы поворота
Igor3D 10.03.2025
Добрый день Тема Эти формулы приводятся во множестве тьюториалов, часто под видом "матрица вращения на плоскости". x' = x * cos(a) - y * sin(a) y' = y * cos(a) + x * sin(a) Как бы Вы их. . .
Что нового в .NET 10
UnmanagedCoder 10.03.2025
. NET 10 выходит как релиз с длительной поддержкой (LTS), включающей три года обновлений. В этом обновлении Microsoft сфокусировались на нескольких направлениях: производительность, оптимизация. . .
Отложенное высвобождение, RCU и Hazard Pointer в C++26
NullReferenced 09.03.2025
Многопоточное программирование стало важной частью современной разработки. Когда несколько потоков одновременно работают с общими данными, возникает целый ряд проблем, связанных с синхронизацией и. . .
Неблокирующийся стек на C++26
NullReferenced 09.03.2025
Традиционные способы синхронизации в многопоточном программировании — мьютексы, семафоры, условные переменные — часто превращаются в узкое место в плане производительности. При этом неблокирующиеся. . .
Обработка строк в C++26: Новые возможности string и string_view
NullReferenced 09.03.2025
Новый стандарт C++26 предлагает много улучшений для работы с привычными string и относительно новыми string_view. string_view - это невладеющая ссылка на последовательность символов, появившаяся в. . .
Мой первый аддон для Blender 3D, с помощью нейронки (не зная даже азов пайтона, но это не значит что так и с остальным).
Hrethgir 09.03.2025
Потратил весь день. Пол-дня мне хватило, чтобы понять что с версией с 14B мне не одолеть написание функционального кода, на языке с которым я вообще никак не знаком - пайтон. Версия 22B от другого. . .
Einstein@Home сегодня исполняется двадцать лет!
Programma_Boinc 09.03.2025
Einstein@Home сегодня исполняется двадцать лет! Отправлено 19 февраля 2025 года в 17:20:21 UTC Я хочу поздравить всех наших волонтеров, разработчиков и ученых из Einstein@Home. Мы официально. . .
Заполнители и расширенный набор символов в C++26
NullReferenced 09.03.2025
C++26 представляет два важных обновления: заполнители и расширенный набор символов. Заполнители (placeholders) решают давнюю проблему лаконичности кода в шаблонных выражениях и лямбда-функциях. Они. . .
Контракты в C++26
NullReferenced 09.03.2025
Контракты – это механизм, позволяющий указывать предусловия, постусловия и инварианты для функций в коде. Эта функциональность должна была стать частью C++20, но была исключена на встрече комитета. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru