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

Ошибка в формуле при компиляции - C++

Восстановить пароль Регистрация
 
=lisenok=
0 / 0 / 0
Регистрация: 22.05.2010
Сообщений: 16
21.11.2012, 19:41     Ошибка в формуле при компиляции #1
Вот формула
C++
1
 int k=ceil(sqrt(tmp.Length()-1));
на которой выдает ошибку: Ambiguity between 'std::sqrt(float) at c:\program files (x86)\embarcadero\rad studio\8.0\include\windows\crtl\math.h:266' and 'std::sqrt(long double) at c:\program files (x86)\embarcadero\rad studio\8.0\include\windows\crtl\math.h:302'
Не могу понять как исправить эту ошибку, помогите, пожалуйста.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.11.2012, 19:41     Ошибка в формуле при компиляции
Посмотрите здесь:

Ошибка при компиляции. C++
C++ Не является внутренней или внешней командой - ошибка не при компиляции а при работе программы
C++ Ошибка при компиляции
Ошибка при компиляции. Где ошибка? (Работа с классом) C++
Ошибка при компиляции C++
C++ ошибка при компиляции
Ошибка при компиляции C++
C++ Ошибка памяти при выполнении, при компиляции не выводит ошибки

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ps10n1ck
 Аватар для ps10n1ck
53 / 47 / 2
Регистрация: 10.11.2010
Сообщений: 132
21.11.2012, 20:13     Ошибка в формуле при компиляции #2
компилятор не может определить какую из функций использовать, с параметром типа float или double, откуда у вас взялись эти данные, и что это:
C++
1
(tmp.Length()-1)
Добавлено через 16 минут
по всей видимости, результат выполнения этого участка дает результат типа int, и компилятор не знает какую из двух перегруженных функций к нему применить, т.к. int может быть приведен как к float так и к double
если же данное выражение верно, то попробуйте сделать так :
sqrt((float)(tmp.Length()-1))
или
sqrt((double)(tmp.Length()-1))
=lisenok=
0 / 0 / 0
Регистрация: 22.05.2010
Сообщений: 16
21.11.2012, 22:07  [ТС]     Ошибка в формуле при компиляции #3
Цитата Сообщение от ps10n1ck Посмотреть сообщение
компилятор не может определить какую из функций использовать, с параметром типа float или double, откуда у вас взялись эти данные, и что это:
C++
1
(tmp.Length()-1)
Добавлено через 16 минут
по всей видимости, результат выполнения этого участка дает результат типа int, и компилятор не знает какую из двух перегруженных функций к нему применить, т.к. int может быть приведен как к float так и к double
если же данное выражение верно, то попробуйте сделать так :
sqrt((float)(tmp.Length()-1))
или
sqrt((double)(tmp.Length()-1))
Спасибо огромное, дополнила формулу до такого вида:
C++
1
int k=ceil(sqrt(double(tmp.Length()-1)));
и всё заработало!
Yandex
Объявления
21.11.2012, 22:07     Ошибка в формуле при компиляции
Ответ Создать тему
Опции темы

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