2017-02-21 35 views
1

У меня есть NumericUpDown и установить десятичных разрядов на свойства до 3, так что стало 0,000C# - Как бороться с десятичной

Вот код

Decimal inputGrossWeight = numGrossWeight.Value; 

if (inputGrossWeight = 0.000) 
{ 
    MessageBox.Show("Gross Weight must be filled!"); 
} 
else 
{ 
    Data newData = new Data(); 
    newData.grossWeight = inputGrossWeight; 
} 

примечание:

  • numGrossWeight - имя numericUpDown

  • grossWeight - это имя столбца в моей базе данных

и хранить его в базу данных с типом данных поплавка

Поэтому, когда тип пользователя в 2365 он будет хранится в базе данных 2365 тоже.

я попытался с помощью много способов, и это дает мне сообщение об ошибке:

Cannot implicitly convert type 'decimal' to 'double'. An explicit conversion exists (are you missing a cast?)

Literal of type double cannot be implicitly converted to type 'decimal'; use an 'M' suffix to create a literal of this type

Что случилось с моим кодом?

+5

Первая проблема: вы используете '=', когда хотите '=='. Вторая проблема: вы используете '0.000', который является« двойным »литералом; вы хотите «0.000m», так что это буква «decimal», точно так же, как говорит вторая ошибка компилятора. (Неясно, какая строка вызывает первую ошибку ...) –

+4

сообщение об ошибке сообщает вам, что именно не так –

+0

Ошибка явно говорит, что делать, не так ли? «Явное преобразование существует (вы пропускаете листинг?)» – HimBromBeere

ответ

4

Вы пытаетесь назначить в своем заявлении if.

попробовать это довольно

if (inputGrossWeight == 0m) 

Как Джон Скит отметил в своем комментарии, путем добавления m вы убедитесь, что вы используете decimal буквальные и, таким образом, сравнивая яблоки с яблоками.

+0

работает с добавлением «m» на нем, но я до сих пор не понимаю, к чему «м» привык? –

+0

Добавление 'm' делает его десятичным буквальным, как упоминал Джон Скит. Когда у вас его нет, это двойной литерал. –

+1

спасибо человеку за объяснение –

 Смежные вопросы

  • Нет связанных вопросов^_^