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

标签 javascript rounding

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

完成计算后,返回的值采用十进制形式,例如

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

最佳答案

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);

编辑:我刚刚看到您已经有一个返回值。

添加一些关于一般 JavaScript 代码风格的花絮:

  • TitleCased var 名称通常保留给构造函数,即创建对象和类的函数。如果您使用 TypeScript,您也会在类型和接口(interface)中看到它。总体而言,标题大小写用于实体。
    • 变量和函数的默认值应为驼峰命名法,上述异常(exception)情况除外。
  • Array是保留字,不能用作变量名。如果你想使用Array.prototype.forEach ,语法为 [1,2,3,4].forEach((num) => doSomething(num))

关于Javascript - 在百分比函数之后使用 Math.round,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61411693/

相关文章:

javascript - 我应该在 html 标记中添加 "javascript:"吗?

javascript - Joomla 站点中的菜单显示在内容后面

javascript - 如何正确美化.vue文件?

javascript - JavaScript 中的原型(prototype)和属性继承

javascript - 通过数组javascript搜索和过滤

C# 格式化货币

java - BigDecimal setScale 使用舍入模式一半甚至不起作用

c++ - 将 double 舍入到最接近的 uint64_t

java - 如何在 Java 中四舍五入到最接近的 0.05?

jQuery(1.7.2 - 最新)- 设置 CSS 值时的怪异行为(小数/ float 错误)