У меня есть программа калькулятор, которая превышает 59 в секундах.Например, если я рассчитываю скорость до 4 минут и 40 секунд и выбираю расстояние марафона как 42 195 километров или 42 195 метров, программа рассчитывает 3 часа, 16 минут и 64 секунды.Правильный расчет должен составлять 3 часа 17 минут и 4 секунды.Я попытался найти ошибку в pace_sec в pacecalculator.js ниже, но не нашел решения.
Сайт с калькулятором: https://spurt.no/spurtcoach/
Есть идеи, что вызывает эту ошибку?
var calculate = {
time : function() {
if ( !_check.time() ) { modal.open('error', 'To calculate Time, enter the Pace and Distance'); }
else {
var time = seconds_to_hhmmss( _get.distance() * _get.pace() * _get.factor() );
document.querySelector('#time-hours').value = time['h'];
document.querySelector('#time-minutes').value = time['m'];
document.querySelector('#time-seconds').value = time['s'];
modal.open('info');
}
},
distance : function() {
if ( !_check.distance() ) { modal.open('error', 'To calculate Distance, enter the Time and Pace'); }
else {
var distance = _get.time() / ( _get.pace() / _get.factor(true) );
document.querySelector('#distance-amount').value = distance.toFixed(4);
modal.open('info');
}
},
pace : function() {
if ( !_check.pace() ) { modal.open('error', 'To calculate Pace, enter the Time and Distance'); }
else {
var pace_sec = ( _get.time() / _get.distance() ) / _get.factor();
var pace = seconds_to_hhmmss( parseInt(pace_sec) );
if ( parseInt(pace['h']) > 0 ) {
pace['m'] = parseInt(pace['m']) + (parseInt(pace['h'])*60);
pace['h'] = 0;
}
document.querySelector('#pace-minutes').value = pace['m'];
document.querySelector('#pace-seconds').value = pace['s'];
modal.open('info');
}
},
splits : function() {}
}
var _check = {
time : function() { return ( !!_get.distance() && !!_get.pace() ); },
distance : function() { return ( !!_get.time() && !!_get.pace() ); },
pace : function() { return ( !!_get.time() && !!_get.distance() ); }
}
var _get = {
factor : function(reverse) {
var d = document.querySelector('#distance-unit option:checked').value;
var p = document.querySelector('#pace-unit option:checked').value;
return (!!reverse) ? convert_units(p, d) : convert_units(d, p);
},
time : function() {
var h = document.querySelector('#time-hours').value;
h = (h == '') ? 0 : stripZeros(h);
var m = document.querySelector('#time-minutes').value;
m = (m == '') ? 0 : stripZeros(m);
var s = document.querySelector('#time-seconds').value;
s = (s == '') ? 0 : stripZeros(s);
var time_seconds = hhmmss_to_seconds(h,m,s);
return (
isPositiveNumber(h) &&
isPositiveNumber(m) &&
isPositiveNumber(s) &&
( time_seconds > 0 )
) ? parseFloat(time_seconds) : false;
},
distance : function() {
var el = document.querySelector('#distance-amount');
var dist = el.value;
dist = stripZeros( dist.replace(',','.') );
el.value = dist;
return (isPositiveNumber(dist) && dist > 0) ? parseFloat(dist) : false;
},
pace : function() {
var m = document.querySelector('#pace-minutes').value;
m = (m == '') ? 0 : stripZeros(m);
var s = document.querySelector('#pace-seconds').value;
s = (s == '') ? 0 : stripZeros(s);
var time_seconds = hhmmss_to_seconds(0,m,s);
return (
isPositiveNumber(m) &&
isPositiveNumber(s) &&
( time_seconds > 0 )
) ? parseFloat(time_seconds) : false;
}
}