Javascript - 在百分比函数后使用Math.round

问题描述 投票:0回答:1

我有一个计算函数,用于确定一个数组中两个值之间的百分比差异。

在我进行计算后,返回的值是十进制形式,如

0: 6.439999737456044
​
1: 7.7490311455816805
​
2: 2.3720164855984383
​
3: 4.12554213772474

我试图将数组中的每个数字四舍五入到最接近的整数。所以索引0=6,索引1=8,索引2=2,索引3=4。

我在计算结束时使用了math.round方法,但它对返回的数字没有影响,因为它们返回的是上面显示的小数。

这是我的代码。

const Numerators = [];
    const Denominators = [];
    Array.forEach(({ DataValue }, i) => {
        const arrToPushTo = i % 2 === 0 ? Denominators : Numerators;
        arrToPushTo.push(Number(DataValue.replace(/,/g, '')));
    });
    const Percentage = Numerators.map((Numerator, i) => {
        const Denominator = Denominators[i];
        return 100 * Math.abs((Denominator - Numerator) / ((Denominator + Numerator) / 2));
        math.Round(Percentage)
    });

console.log(Percentage)

我还尝试创建另一个变量 const Round = math.Round(Percentage) 但是当控制台记录这个变量的时候,我被返回的是 NaN

javascript rounding
1个回答
2
投票

math.Round 并没有突变原始值。你需要将结果分配给一个变量或从函数中返回。你要把这个也从循环中移出来。后面什么都没有 return 在循环中执行。

类似于。

const Percentage = Numerators.map((Numerator, i) => {
        const Denominator = Denominators[i];
        return 100 * Math.abs((Denominator - Numerator) / ((Denominator + Numerator) / 2));
    });

const percentages = Percentage.map((percent) => math.Round(percent));

console.log(percentages);

EDIT: 我刚刚看到你已经有一个返回值了.

补充一些关于一般JavaScript代码风格的小知识。

  • TitleCased的var名字一般是保留给构造函数的,也就是创建对象的函数,还有类。如果你使用TypeScript,你也会看到它用于类型和接口。大致上来说,title case是用于实体的。
    • 变量和函数的默认应该是camelCase,除了上面提到的例外。
  • Array 是一个保留字,不能用作变量名。如果你想使用 Array.prototype.forEach语法为 [1,2,3,4].forEach((num) => doSomething(num))

-1
投票

只是做 Math.floor(val)~~val 如果你处理的是非负值的数

© www.soinside.com 2019 - 2024. All rights reserved.