Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
百分比的Javascript计算已关闭_Javascript_Html - Fatal编程技术网

百分比的Javascript计算已关闭

百分比的Javascript计算已关闭,javascript,html,Javascript,Html,我有一个JavaScript,我用它来计算一个表单字段的百分比折扣,这个表单字段包含一个总值 var十三=10; 风险值百分比折扣=(十三)*0.01; var贴现率最终=(382.50*(贴现率)); console.log(最终折扣百分比toFixed(2))好的,应该是完整值减去折扣-第三行是: var percent_discount_final = value_of_some_form_field - (value_of_some_form_field * percent_disc

我有一个JavaScript,我用它来计算一个表单字段的百分比折扣,这个表单字段包含一个总值

var十三=10;
风险值百分比折扣=(十三)*0.01;
var贴现率最终=(382.50*(贴现率));

console.log(最终折扣百分比toFixed(2))好的,应该是完整值减去折扣-第三行是:

var percent_discount_final = value_of_some_form_field - (value_of_some_form_field  * percent_discount);

您几乎算出了正确的乘数,但您忘记了从
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
与您的类似,为了简单起见,此函数假定
为正。负值将进行加法而不是减法

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

有趣的事实-浮动类型不精确。它来源于大数理论,设计上是近似的。这就是为什么有几种语言也提供货币等类型。对于没有的语言,我们计算整数上的所有货币内容。这不是javascript相关的“bug”,而是计算机科学的“特性”:

如何计算整数上的货币数据?嗯,您必须创建/模拟新类型。总体思路是

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


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

Try
percent\u discount\u final=Math.round(某些表单字段的值*percent discount)那不行。如果我的总数是382.50,并且我正在计算其中的10%,它将显示结果为38.20
(10*0.01*382.50)。toFixed(2)
-这将在控制台上返回38.25,刚试过it@BrianFleishman在不知道这些项目的值的情况下,我们无法提供答案。@Brianflishman关于返回值
38.25
(为清晰起见将代码更新为snippet)。谢谢。更改“风险值百分比折扣=(十三)*.01;”至“风险值百分比折扣=(十三)*0.01;”解决了这个问题。