Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.78/36: Рейтинг темы: голосов - 36, средняя оценка - 4.78
body90
372 / 305 / 18
Регистрация: 26.05.2009
Сообщений: 2,676
1

Ошибка CS0019: Оператор "*" не может применяться к операндам типа "decimal" и "float"

12.09.2010, 17:13. Просмотров 7284. Ответов 5
Метки нет (Все метки)

Здравствуйте! Писал приложение и наткнулся на интересную ошибку (честно говоря, я не совсем понимаю причину такого ограничения.
В коде
C#
1
2
// float w1, w2, w0;
float s = this.numericUpDownX.Value * w1 + this.numericUpDownY.Value * w2 + w0;
Ошибка в
C#
1
this.numericUpDownX.Value * w1
и
C#
1
this.numericUpDownY.Value * w2
ошибка CS0019: Оператор "*" не может применяться к операндам типа "decimal" и "float"
Почему я не могу перемножить два этих типа (как и сложить, отнять, разделить)?
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.09.2010, 17:13
Ответы с готовыми решениями:

Оператор "*" не может применяться к операндам типа "type" и "type"
public vector module() { return new vector(x * x + y * y + z * z); } ...

Оператор == не может применяться к операндам "группа методов" и "bool"?
public virtual bool IsInPointOfFall() { return true; } public void...

Ошибка после конвертации метода на С++ к С#: "Неявное преобразование типа "int" в "bool" невозможно"
Ошибка после преобразования метода на С++ к С#: "Неявное преобразование типа "int" в "bool"...

Ошибка: "Не удалось привести тип объекта "System.ConsoleKeyInfo" к типу "System.IConvertible"."
При запуске пишет, что "Не удалось привести тип объекта "System.ConsoleKeyInfo" к типу...

Переопределить операции "+" "=" "-" для экземпляров моего класса
Добрый день. Мне нужно переопределить операции "+" "=" "-" для экземпляров моего класса. Я вижу это...

5
tasty_sock
135 / 133 / 21
Регистрация: 26.01.2010
Сообщений: 350
12.09.2010, 17:34 2
C#
1
2
3
4
5
            float w1 = 5.23f, w2 = 4.012f, w0 = 10;
 
            float result = (float)this.numericUpDown1.Value * w1 + (float)this.numericUpDown1.Value * w2 + w0;
            
            MessageBox.Show(result.ToString());
0
body90
372 / 305 / 18
Регистрация: 26.05.2009
Сообщений: 2,676
12.09.2010, 20:53  [ТС] 3
Да что делать в этой ситуации и детю понятно. Но почему нельзя выполнять таких действий?
0
NickoTin
Почетный модератор
Эксперт .NET
8655 / 3607 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
12.09.2010, 23:20 4
Цитата Сообщение от body90 Посмотреть сообщение
Но почему нельзя выполнять таких действий?
Может потому что decimal и float разные типы данных, и имеют разные размеры.
Код
Тип	|	Размер
----------------------------------
float	|	4 байта (32 бита)
double	|	8 байт (64 бита)
decimal	|	16 байт (128 бит)
0
body90
372 / 305 / 18
Регистрация: 26.05.2009
Сообщений: 2,676
13.09.2010, 00:22  [ТС] 5
Но ведь, например, int можно умножить на float и т. д.
0
NickoTin
Почетный модератор
Эксперт .NET
8655 / 3607 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
13.09.2010, 00:31 6
Ну так int 4 байтный, и компилятор знает, что при умножении int на один из этих типов ничего не случится (данные не выйдут за пределы) и int будет неявно преобразован в float (и т.д.).

p.s.
Неявное преобразование - не требуется никакого специального синтаксиса, поскольку преобразование безопасно для типов и данные не теряются. Примерами могут служить преобразования от меньшего к большему целому типу, и преобразования из производных классов в базовые классы.
<- MSDN
1
13.09.2010, 00:31
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.09.2010, 00:31

Не удается преобразовать из типа "char" в тип "string"
Возникла необходимость отправить нескольким адресатам Email сообщение. Для этого я базу данных с...

Ошибка "Тип "MyPoint" создан из нескольких разделенных классов в одном и том же файле." при открытии дизайнера
Добрый день, формучане. У меня возникла необходимость добавления моего класса в коллекцию, для...

Rider C# 7.0 , ошибка компилятора : " Недопустимое значение "7" для /langversion;"
Установил недавно на чистую 10ку Rider 2017.3. Начал писать , в редакторе некоторые синтаксические...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.