使用浮点数获取基于数组的y轴最大/最小值

Get y-axis max/min value based on array using floating point numbers

本文关键字:最小值 数组 获取 浮点数 于数组      更新时间:2024-05-24

当给定一个数组时,我一直在使用一个脚本来计算SVG/HTML5 Canvas图的y轴最小/最大标签。

例如[12472136297177,21]y轴最小标签=0 | y轴最大标签=750

它对整数处理得很好,但对浮点值不起作用。如何使用浮点值实现此操作?

这些是我用来计算最小值和最大值的函数

// Calculate y-axis Max label value
function yMax (numArray) {
    var max = getMaxOfArray(numArray);
    var yRange = getRangeOfArray(numArray);
    var yPow = Math.pow(10, yRange.toString().length - 1) /2; 
    // (/2) division added for more accurate result 
    return Math.ceil(max / yPow) * yPow
}
// Calculate y-axis Min label value
function yMin (numArray) {
    var min = getMinOfArray(numArray);
    var yRange = getRangeOfArray(numArray);
    var yPow = Math.pow(10, yRange.toString().length - 1) ;
    return Math.floor(min / yPow) * yPow 
}

我已经包含了我提到的有用数学函数的脚本。

// Get Max value from array
function getMaxOfArray(numArray) {
    return Math.max.apply(null, numArray);
}
// Get Min value from array
function getMinOfArray(numArray) {
    return Math.min.apply(null, numArray);
}
// Get Range of array
function getRangeOfArray (numArray) {
    var max = getMaxOfArray(numArray);
    var min = getMinOfArray(numArray);
    return max - min;
} 

yRange.toString().length更改为1 + Math.floor(Math.log(yrange)/LOG10);,其中LOG10是一个常量,只需要初始化一次为LOG10 = Math.log(10);。这将适用于浮点,并且在整数上具有相同的行为。