2017-02-23 3 views
2

Я пытаюсь выяснить конечную цену, основанную на заработной плате, умноженной на часы.Как сделать расчет расценок на основе времени и заработной платы

Это мой код Почему, если часы 02:30:00 и заработная плата: 14 долларов США - это всего лишь 2?

TimeSpan duration = TimeSpan.Parse("02:30:00"); 
int wage = 14; 
var result = (duration.Hours + (duration.Minutes/60) * wage); 
+1

Пожалуйста прочитайте инструкцию [MCVE] для публикации кода. Я отредактировал образец публикации, чтобы показать один вариант - в то же время становится ясно, что совершенно не связанный [тег: model-view-controller] вообще не вызывался в сообщении ([tag: asp.net-mvc] быть немного лучше, но на самом деле не нужно). –

+1

Боковое примечание: один из стандартных дубликатов для аналогичного вопроса - http://stackoverflow.com/questions/9288904/division-returns-zero отвечает на ваш вопрос. –

ответ

3

Во-первых, выражение фактически оценивается как:

duration.Hours + ((duration.Minutes/60) * cleaner.Price) 

Во-вторых, вы делаете целочисленное деление, поэтому 30/60 приведет к 0, оставляя Вас со значением 2, т.е. Hours части ,

Чтобы устранить эту проблему, вы можете сделать что-то вроде ниже:

(duration.Hours + ((decimal)duration.Minutes/60)) * 14; 

В качестве альтернативы, вы можете пропустить этот компонент мудрый расчет, а просто использовать TotalHours собственность вместо:

duration.TotalHours * 14 
+0

Работает отлично! Спасибо вам! –