Форум программистов, компьютерный форум CyberForum.ru

Почему функцию sqrt нельзя применять к int переменным, а только к double и flot? - C++

Восстановить пароль Регистрация
 
StanislavUA
 Аватар для StanislavUA
44 / 44 / 3
Регистрация: 27.04.2011
Сообщений: 163
11.11.2012, 00:34     Почему функцию sqrt нельзя применять к int переменным, а только к double и flot? #1
Почему функцию sqrt нельзя применять к int переменным, а только к double и float?

Извините за опечатку в названии темы.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.11.2012, 00:34     Почему функцию sqrt нельзя применять к int переменным, а только к double и flot?
Посмотрите здесь:

C++ Почему sqrt требует тип double?
Double, int , long double C++
C++ Вычислить значение выражения sqrt (2 + sqrt (2 + sqrt (2 ... sqrt2))), (n-слагаемых)
Почему нельзя переделать dll в exe, изменив входную функцию? C++
Почему нельзя объявить в описание класса статический double? C++
Используя перегрузки, написать функцию для выполнения действий, для следующих типов данных: float, int, double C++
Конверсия указателя из double в int, пропускает передаваемые переменные в функцию C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
NoMasters
Псевдослучайный
1740 / 1083 / 70
Регистрация: 13.09.2011
Сообщений: 3,102
11.11.2012, 00:35     Почему функцию sqrt нельзя применять к int переменным, а только к double и flot? #2
А почему вы спрашиваете?
StanislavUA
 Аватар для StanislavUA
44 / 44 / 3
Регистрация: 27.04.2011
Сообщений: 163
11.11.2012, 00:36  [ТС]     Почему функцию sqrt нельзя применять к int переменным, а только к double и flot? #3
NoMasters, интересно
NoMasters
Псевдослучайный
1740 / 1083 / 70
Регистрация: 13.09.2011
Сообщений: 3,102
11.11.2012, 00:40     Почему функцию sqrt нельзя применять к int переменным, а только к double и flot? #4
А какой смысл делать отдельный вариант для целого? Никаких преимуществ лишняя реализация не даст, всё равно внутри придется работать с вещественными типами.
m0nAde
 Аватар для m0nAde
4 / 4 / 1
Регистрация: 03.09.2011
Сообщений: 26
11.11.2012, 00:48     Почему функцию sqrt нельзя применять к int переменным, а только к double и flot? #5
функция sqrt,встроенная функция,и оно всегда возвращает double,если тя нужен инт, преобразует его в инт,
функция sqrt это квадратный корень числа,оно больше встречается как дабл чем инт.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include "stdafx.h"
#include "math.h"
#include "iostream.h"
 
 
int main(int argc, char* argv[])
{
    int a=sqrt(10);
    double k=sqrt(10);
    cout<<a<<endl;
    cout<<k<<endl;
    //\ili
    int h=k;
    cout<<h<<endl;
    return 0;
}
StanislavUA
 Аватар для StanislavUA
44 / 44 / 3
Регистрация: 27.04.2011
Сообщений: 163
11.11.2012, 00:53  [ТС]     Почему функцию sqrt нельзя применять к int переменным, а только к double и flot? #6
Цитата Сообщение от NoMasters Посмотреть сообщение
всё равно внутри придется работать с вещественными типами.
int занимает памяти в 2 раза меньше чем double.
к тому же квадрат всех натуральных чисел всегда целое число,и sqrt естественно будет возвращать тоже целое, а не вещественное.
NoMasters
Псевдослучайный
1740 / 1083 / 70
Регистрация: 13.09.2011
Сообщений: 3,102
11.11.2012, 00:55     Почему функцию sqrt нельзя применять к int переменным, а только к double и flot? #7
Цитата Сообщение от StanislavUA Посмотреть сообщение
к тому квадрат всех натуральных чисел всегда целое число
Что ни разу не значит, что каждое целое является квадратом целого.
Цитата Сообщение от StanislavUA Посмотреть сообщение
sqrt естественно будет возвращать тоже целое
И какое же целое он должен вернуть для, например, двух?
StanislavUA
 Аватар для StanislavUA
44 / 44 / 3
Регистрация: 27.04.2011
Сообщений: 163
11.11.2012, 01:02  [ТС]     Почему функцию sqrt нельзя применять к int переменным, а только к double и flot? #8
m0nAde, для использования sqrt math.h подключать не нужно. к тому же из-за того что для sqrt нужен double или float, вариант с sqrt(10) не прокатит, нужно писать sqrt(10.0).

Добавлено через 4 минуты
Цитата Сообщение от NoMasters Посмотреть сообщение
И какое же целое он должен вернуть для, например, двух?
имелось ввиду,что sqrt возвращает целое от квадрата целого(то есть 49-7, 4-2 и т.д.), а 2 не является квадратом какого-то целого.
NoMasters
Псевдослучайный
1740 / 1083 / 70
Регистрация: 13.09.2011
Сообщений: 3,102
11.11.2012, 01:06     Почему функцию sqrt нельзя применять к int переменным, а только к double и flot? #9
StanislavUA, кому он нужен будет такой?
m0nAde
 Аватар для m0nAde
4 / 4 / 1
Регистрация: 03.09.2011
Сообщений: 26
11.11.2012, 01:11     Почему функцию sqrt нельзя применять к int переменным, а только к double и flot? #10
у меня vs6 так что нужно подключать,и еще с sqrt(10) у меня не было никаких проблем скоко я помню, ну не знаю, может я вас не понял,
ну я там уже вставлял код,копируй и компилируй,посмотрим как не прокатит
StanislavUA
 Аватар для StanislavUA
44 / 44 / 3
Регистрация: 27.04.2011
Сообщений: 163
11.11.2012, 01:14  [ТС]     Почему функцию sqrt нельзя применять к int переменным, а только к double и flot? #11
Цитата Сообщение от NoMasters Посмотреть сообщение
кому он нужен будет такой?
я не говорю, что бы он работал только с int, просто поддержка этого типа во многих случаях была бы полезна(по крайней мере мне).

Добавлено через 2 минуты
Цитата Сообщение от m0nAde Посмотреть сообщение
ну я там уже вставлял код,копируй и компилируй
спасибо,но я знаю как работает функция sqrt.
m0nAde
 Аватар для m0nAde
4 / 4 / 1
Регистрация: 03.09.2011
Сообщений: 26
11.11.2012, 01:16     Почему функцию sqrt нельзя применять к int переменным, а только к double и flot? #12
Рад за вас,удачи в поисках ответов!!!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.11.2012, 01:29     Почему функцию sqrt нельзя применять к int переменным, а только к double и flot?
Еще ссылки по теме:

C++ Sqrt(double)
Почему перестает работать программа при замене double на long double? C++
Преобразовать 2 числа int в 1 число float(double) | double int1.int2 C++
Почему мы пишем double x (double y)? а не через запятую double x,y C++
C++ Написать функцию с переменным числом параметров, находящую минимальное из чисел типа int

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

Или воспользуйтесь поиском по форуму:
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1237 / 986 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
11.11.2012, 01:29     Почему функцию sqrt нельзя применять к int переменным, а только к double и flot? #13
А в чём проблема? Определяете её себе и живёте счастливо.
C++
1
2
3
4
5
6
#include <math.h>
 
int sqrt(int x)
{
    return sqrt(static_cast<double>(x));
}
А не определена, потому что извлечение корня это частичная функция на множестве целых чисел. Слишком много вариантов действий для тех чисел, для которых она не определена. И не надо про "это ж очевидно, что надо округлить к ближайшему целому". Ни разу не очевидно. Логичнее было бы падать так же, как падает деление на ноль.
Yandex
Объявления
11.11.2012, 01:29     Почему функцию sqrt нельзя применять к int переменным, а только к double и flot?
Ответ Создать тему
Опции темы

Текущее время: 19:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru