百分比的Javascript计算已关闭
我有一个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
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,它们大多数都有专用的货币类型,因此您可以在数据库端进行所有计算。Trypercent\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;”解决了这个问题。