1

24 の価格があり、1 日の各時間に 1 つの価格があり、それらの平均 (1 日平均) を見つける必要があります。

しかし、価格を正しく平均化することはできません。Javascript で価格を平均化/小数を丸める方法に関する正確なアルゴリズムを見つけることもできません。すべてのメソッド (parseFloat、toFixed()) は、時々不正確な結果を生成するようです。

Javascriptで価格を平均化/小数点以下を丸める正確な方法を知っている人はいますか? そして、私は以下の価格の配列でのみ機能するものについて話しているのではなく、価格の配列(小数)で機能し、防弾であるものについて話している.

これが私が今持っているものです。Chrome では 178.00 を返します。ただし、178.01 が返されるはずです。

// Rounding Function
function roundDecimal(value) {
    return Number(Math.round(value+'e2')+'e-2');
};

var priceSum    = 0;
var prices      = [23.4,24.4,24.68,25,25.1,30.81,851.19,646.47,659.24,707.7,759.23,124.69,37.93,53.25,23.4,23.8,23.4,23.4,50.57,37.78,25,24.55,23.4,23.73]

for(var x = 0; x < prices.length; x ++) {
     priceSum   = priceSum + prices[x];
    console.log(priceSum);
};

var priceAverage    = roundDecimal( priceSum / prices.length );

console.log("Daily Average is: "+priceAverage);
4

2 に答える 2

3

この質問を参照してくださいhttps://stackoverflow.com/a/588014/536984

JavaScript の浮動小数点演算は金融計算を行うためのものではありません。

var array = [2340, 2440, 2468, 2500, 2510, 3081, 85119, 64647, 65924, 70770, 75923, 12469, 3793, 5325, 2340, 2380, 2340, 2340, 5057, 3778, 2500, 2455, 2340, 2373];

Math.round(array.reduce(function (a, b) { return a + b }) / array.length)
于 2014-03-30T05:16:34.617 に答える