簡體   English   中英

使用浮點數基於數組獲取y軸最大/最小值

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

我一直在使用一個腳本來計算給定數組時SVG / HTML5 Canvas圖形的y軸Min / Max標簽。

例如[124,721,361,297,177,21] y軸最小標簽= 0 | y軸最大標簽= 750

它一直在使用整數,但不適用於浮點值。 我怎樣才能使用float值?

這些是我用來計算最小值和最大值的函數

// 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); 這將適用於浮點並且與整數具有相同的行為。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM