Вам нужно вычесть (D * 24)
из часов ... или вы можете просто использовать:
int H = ((int) dHours) % 24;
Если вы все равно собираетесь кастовать на int
, вам не нужно звонить Math.Floor
.Например, вы могли бы использовать:
// I'd rename dHours as well, by the way...
int wholeHours = (int) dHours;
int days = wholeHours / 24;
int hours = wholeHours % 24;
int minutse = (int) ((dHours % 1M) * 60);
С другой стороны, вам нужно быть осторожным, если оно может быть отрицательным - в этом случае все может закончиться ошибкой.Если вы не уверены, что должны справиться с этим, я бы явно проверил это и выдал исключение, если dHours
отрицателен, прежде чем делать что-либо еще.
(Обратите внимание, что ваш блок try / catch не имеет смыслаи отвлекает в данный момент. Просто избавьтесь от этого.)