本文参考博客:http://blog.csdn.net/heyzol/article/details/22912389
由于我是固定了刻度数,美观的呈现图表,所以在原博主算法上进行了修改
var calculateRulerMark = function(arrMark, numMin, numMax, iHeight, iActualMarkNum) { if(numMax <= numMin) { return; } var iMinMark = numMin; var iMaxMark = numMax; var iSuggestMarkNum = parseInt(iHeight / 20) + 1; //传了实际的进来说明,实际的比建议的大 iActualMarkNum = iActualMarkNum ? iActualMarkNum - 1 : iSuggestMarkNum; var iSuggestStep = (numMax - numMin) / iActualMarkNum; var iBase = Math.pow(10, parseInt(Math.log(iSuggestStep)/Math.log(10))); if(iBase != iSuggestStep) { iBase = 10 * iBase; } var iTempStep = (iSuggestStep / iBase).toFixed(6); // 常规步长 0.1, 0.2, 0.25, 0.5 , 1 if(iTempStep >= 0 && iTempStep <= 0.1) { iTempStep = 0.1; } else if(iTempStep >=0.1000