Проблема в освении))
Допустим мне надо высчитать приращение х и у для расчета следующей точки в окружности, т.е. я пишу конструкцию типа
X = Math.Round(x0 + R * Math.Asin(a)); Y = Math.Round(y0 + R * Math.Acos(a)); Вылетает эррор: Error 1 Cannot implicitly convert type 'double' to 'float'. An explicit conversion exists (are you missing a cast?) Кто подскажет? |
Ответ: Проблема в освении))
X = (float)Math.Round(x0 + R * Math.Asin(a));
Y =(float) Math.Round(y0 + R * Math.Acos(a)); скорее всего так. попытайся приводить нужные числа к нужным типам. подскащки какие имеена числа не совпадают по типам студия обычно даёт X = Math.Round(x0 + R * (float)Math.Asin(a)); Y = Math.Round(y0 + R * (float)Math.Acos(a)); или так:)) нужно смотреть конкретно |
Ответ: Проблема в освении))
видимо X и Y типа float у тебя.
C# считает ошибкой даунгрейд типов, т.е. когда double (8байт) присваивается к переменной типа float(4байт), то точность данных падает. Есть два пути: * сделать все участвующие переменные типа double * сделать каст (насильное привидение типов) X = (float)Math.Round(x0 + R * Math.Asin(a)); // при условии что x0, y0 и R типа double Y = (float)Math.Round(y0 + R * Math.Acos(a)); А ещё можно даунгрейднуть значения косинуса: X = Math.Round(x0 + R * (float)Math.Asin(a)); Y = Math.Round(y0 + R * (float)Math.Acos(a)); |
Ответ: Проблема в освении))
|
Ответ: Проблема в освении))
DimasSup
|
Ответ: Проблема в освении))
|
Ответ: Проблема в освении))
Всё это оффтоп, C# четко типизированный язык, однако никто немешает определить автоматические методы конвертации, например как определён почти для всех типов данных метод ToString() который автоматически вызывается при попытках работы с данными как со строкой.
Иными словами как и С++, язык позволяет подстраивать его под себя. Учитывая что C# задумывался как язык написания приложений с высокой отказоустойчивостью, то такие требования к коду вполне нормальны, так же существует мнение что правильно спроектированное приложение содержит минимум мест в коде требующих приведения типов в сторону даунгрейда. Так же всвязи с поддержкой многопоточности по-умолчанию, в языке под запретов обыкновенные указатели, однако им на замену пришли умные указатели, ссылки и прочие защищенные сущности. Однако в секции unsafe{ } возможно использование любых небезопасных конструкций. |
Ответ: Проблема в освении))
Цитата:
|
Ответ: Проблема в освении))
всегда рады помочь:)
|
Часовой пояс GMT +4, время: 08:43. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot