diff --git a/src/libslic3r/GCode/CoolingBuffer.cpp b/src/libslic3r/GCode/CoolingBuffer.cpp index fe14a9e492..863cf09630 100644 --- a/src/libslic3r/GCode/CoolingBuffer.cpp +++ b/src/libslic3r/GCode/CoolingBuffer.cpp @@ -244,22 +244,22 @@ float new_feedrate_to_reach_time_stretch( { float new_feedrate = min_feedrate; for (size_t iter = 0; iter < max_iter; ++ iter) { - float nomin = 0; - float denom = time_stretch; + double nomin = 0; + double denom = time_stretch; for (auto it = it_begin; it != it_end; ++ it) { assert((*it)->slow_down_min_speed < min_feedrate + EPSILON); for (size_t i = 0; i < (*it)->n_lines_adjustable; ++i) { const CoolingLine &line = (*it)->lines[i]; if (line.feedrate > min_feedrate) { - nomin += line.time * line.feedrate; - denom += line.time; + nomin += (double)line.time * (double)line.feedrate; + denom += (double)line.time; } } } assert(denom > 0); if (denom < 0) return min_feedrate; - new_feedrate = nomin / denom; + new_feedrate = (float)(nomin / denom); assert(new_feedrate > min_feedrate - EPSILON); if (new_feedrate < min_feedrate + EPSILON) goto finished;