Я уже некоторое время смотрю на этот код, и я не могу понять, что, вероятно, является простой ошибкой ... Короче, у меня есть переменная типа float в Java, которая, кажется, хранит толькоцелочисленное содержимое (целое число) того, что значение фактически должно быть.Этот фрагмент кода работал раньше, когда все было объединено в одну функцию, но после того, как я переформировал код для использования большего количества функций, произошла эта ошибка.Вот что я получил до сих пор:
Java Code
public class ModifyTimeController extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
PopulateTimeIntervals(request.getWriter());
}
protected void PopulateTimeIntervals(PrintWriter writer) {
NumberFormat numberFormat = NumberFormat.getNumberInstance();
numberFormat.setMinimumFractionDigits(2);
numberFormat.setMaximumFractionDigits(2);
float workHours = (float)0.00;
...
/* Code that queries a database for TimeIntervals */
...
while(resultSet.next()) {
// I was told that this type of conversion is
// possible since Timestamp is an extension of Date
Date dtStart = resultSet.getTimestamp("dtStart");
Date dtEnd = resultSet.getTimestamp("dtEnd");
// Accumulates the hours worked in each time interval
workHours += CalculateWorkHours(dtStart, dtEnd);
}
// Should print out something like: 54.27
writer.println(numberFormat.format(workHours).toString());
}
protected float CalculateWorkHours(Date dtStart, Date dtEnd) {
// Divides the difference of the start and end times
// (in miliseconds) by 3600000 to convert to hours
return (dtEnd.getTime() - dtStart.getTime()) / 3600000;
}
}
Это был долгий день, поэтому я, наверное, просто что-то упустил ... Но вместо того, чтобы распечатывать что-то вроде54.27
часов, я получаю квартиру 54
часов.Форматирование чисел работало просто отлично, до того ... Так что я не знаю, что случилось.