百分比的Javascript计算已关闭

时间:2017-10-09 00:11:08

标签: javascript html

我有一些JavaScript用于计算包含总值的表单字段的百分比折扣。

var thirteen = 10;
var percent_discount = (thirteen) * 0.01;
var percent_discount_final = (382.50 * (percent_discount));
console.log(percent_discount_final.toFixed(2));

计算输出为38.24 ??

为什么会这样?

enter image description here

3 个答案:

答案 0 :(得分:0)

嗯,应该是全价减去折扣 - 第三行是:

var percent_discount_final = value_of_some_form_field - (value_of_some_form_field  * percent_discount);

答案 1 :(得分:0)

您几乎找到了合适的乘数,但是您忘了从1中减去,因此您乘以0.1而不是0.9

以下是如何从数字中减去任何百分比的示例。

const subtractPercent = (value, percentage) => {
    const multiplier = 1 - (percentage / 100);
    return value * multiplier;
};

subtractPercent(250, 10);   // 225
subtractPercent(250, 3);    // 242.5

与您的类似,此函数假设value为正,为简单起见。负值将添加而不是减去。

subtractPercent(250, -10);  // 275
subtractPercent(-250, 10);  // -225

答案 2 :(得分:0)

有趣的事实 - 浮动类型并不精确。它来自大量的理论,并且通过设计它是近似的。这就是为什么几种语言也提供货币等类型的原因,而对于那些不用的语言,我们计算整数上的所有货币内容。它不是与javascript相关的" bug",它是计算机科学"功能" :)

如何计算整数的货币内容?好吧,你必须创建/模拟新类型。一般的想法是

  • 将所有数据从float转换为整数乘以100
  • 对整数执行所有计算(不能混合单个浮点数,或者结果也会转换为浮点数)
  • 最后(在大多数情况下,它在数据输出/用户界面上)将每个值除以100
是的,在21世纪它看起来很愚蠢,但是当你的工具(JS)没有用于货币计算的专用数据类型时,你可以使用没有魔法。你必须建立它。

JS是这个项目中唯一涉及的语言吗?如果有一些例如某些SQL数据库,其中大多数都有专用的货币类型,因此您可以在数据库端进行所有计算。