From 2278abc4f62862fddfd7ab4180e535e7845da1ae Mon Sep 17 00:00:00 2001 From: rudolfkoenig <> Date: Sun, 15 Nov 2015 18:35:28 +0000 Subject: [PATCH] fhemweb.js: better rounding for floats (Forum #44104) git-svn-id: https://svn.fhem.de/fhem/trunk@9907 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/www/pgm2/fhemweb.js | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/fhem/www/pgm2/fhemweb.js b/fhem/www/pgm2/fhemweb.js index 0e61c9cf1..ba2d8a35b 100644 --- a/fhem/www/pgm2/fhemweb.js +++ b/fhem/www/pgm2/fhemweb.js @@ -766,6 +766,12 @@ FW_createSlider(elName, devName, vArr, currVal, set, params, cmd) var stp = parseFloat(vArr[2]); var max = parseFloat(vArr[3]); var flt = vArr[4]; + var dp = 0; // decimal points for float + if(flt) { + var s = ""+stp; + if(s.indexOf(".") >= 0) + dp = s.substr(s.indexOf(".")+1).length; + } if(currVal != undefined) currVal = currVal.replace(/[^\d.\-]/g, ""); currVal = (currVal==undefined || currVal=="") ? min : parseFloat(currVal); @@ -842,8 +848,8 @@ FW_createSlider(elName, devName, vArr, currVal, set, params, cmd) if(offX < 0) offX = 0; if(offX > maxX) offX = maxX; val = offX/maxX * (max-min); - val = (flt ? Math.floor(val/stp)*stp : - Math.floor(Math.floor(val/stp)*stp))+min; + val = flt ? (Math.floor(val/stp)*stp+min).toFixed(dp) : + (Math.floor(Math.floor(val/stp)*stp)+min); sh.innerHTML = val; sh.setAttribute('style', 'left:'+offX+'px;'); } @@ -871,6 +877,8 @@ FW_createSlider(elName, devName, vArr, currVal, set, params, cmd) currVal = (res ? parseFloat(res[0]) : min); if(currVal < min || currVal > max) currVal = min; + if(flt) + currVal = parseFloat(currVal).toFixed(dp); newEl.activateFn(); }; return newEl;