Javascript js中的数学运算?

Javascript js中的数学运算?,javascript,Javascript,我正在尝试用JS创建一个简单的更改计算器应用程序。我能找到我的美元和25美分硬币的零钱,但是一角硬币有问题。这是我目前的代码。每次我试着让一角硬币工作时,我都会遇到打印正确数量的问题 var美元、25美分、10美分、5美分; 函数calculateChange(){ var amountDue=document.getElementById(“到期金额”).value; var amunreceived=document.getElementById('amount-received')。值;

我正在尝试用JS创建一个简单的更改计算器应用程序。我能找到我的美元和25美分硬币的零钱,但是一角硬币有问题。这是我目前的代码。每次我试着让一角硬币工作时,我都会遇到打印正确数量的问题

var美元、25美分、10美分、5美分;
函数calculateChange(){
var amountDue=document.getElementById(“到期金额”).value;
var amunreceived=document.getElementById('amount-received')。值;
var变化=未收到金额-到期金额;
//document.getElementById('change-output').innerHTML=change.toFixed(2);
美元=数学下限((更改/100)*100);
document.getElementById(“美元输出”).innerHTML=美元;
var剩余=零钱-美元;
控制台日志(美元)
季度=数学楼层((更改%1)*4);
document.getElementById('quarters-output')。innerHTML=quarters;
控制台日志(四分之一)
十美分=数学地板((更改%15)*0.10);
document.getElementById('dimes-output')。innerHTML=dimes;
console.log(十美分)
返回;
//=数学层((更改%0.1)*20);
//document.getElementById('nickels-output')。innerHTML=nickels;
//便士=数学地板(数学四舍五入(变化%0.05*100));
//document.getElementById('pennies-output')。innerHTML=pennies;
};
document.getElementById(“计算更改”).addEventListener(“单击”,计算更改)
到期金额:
收到金额:

美元:
宿舍:
硬币:
(change/100)*100
change
相同(除非存在浮点舍入错误),因此
数学地板((change/100)*100)
数学地板(change)
相同。你应该只计算部门的楼层

dollars = Math.floor(change/100);
然后将其乘以
100
并从
change
中减去,得到需要使用较小面额处理的余数。对于每一种面额,你除以硬币的价值,得到它的底部,然后减去得到下一个余数

var美元、25美分、10美分、5美分;
函数calculateChange(){
var amountDue=document.getElementById(“到期金额”).value;
var amunreceived=document.getElementById('amount-received')。值;
var变化=未收到金额-到期金额;
//document.getElementById('change-output').innerHTML=change.toFixed(2);
var美元=数学下限(变化/100);
document.getElementById(“美元输出”).innerHTML=美元;
var剩余=变化-美元*100;
var季度=数学楼层(剩余/25);
document.getElementById('quarters-output')。innerHTML=quarters;
余数=余数-四分之一*25;
var dimes=数学地板(余数/10);
document.getElementById('dimes-output')。innerHTML=dimes;
余数=余数-十美分*10;
var nickels=数学地板(余数/5);
document.getElementById('nickels-output')。innerHTML=nickels;
余数=余数-镍币*5;
var便士=余数;
document.getElementById('pennies-output')。innerHTML=pennies;
};
document.getElementById(“计算更改”).addEventListener(“单击”,计算更改)
到期金额:
收到金额:

美元:
宿舍:
一角硬币:
镍币:

便士:
你的计算似乎有些混乱。例如,
(change/100)*100
仅仅意味着
change
。同样地,
(更改%1)
只是指
更改
。您可能真正想要的是:

dollars = Math.floor(change);
var remainderafterdollars = change - dollars;
quarters = Math.floor(remainderafterdollars / 0.25);
var remainderafterquarters = remainderafterdollars - (quarters * 0.25);
dimes = Math.floor(remainderafterquarters / 0.10);
var remainderafterdimes = remainderafterquarters - (dimes * 0.10);
nickels = Math.floor(remainderafterdimes / 0.05);
pennies = remainderafterdimes - (nickels * 0.05);

让我们假设欠了126.35英镑,收到了140英镑

那么,13美元,25美分,1美分和5美分

我建议您在将一个片段分离为单独的变量之后,每次都要减少更改字段

change = change - dollars;
...

change = change - (quarters * 0.25);
...
等等


这将使计算变得简单。

我认为不使用%而只需简单的除法就可以轻松得多。类似这样的方法会奏效:

const calcChange = function(amt) {
  const numDollars = Math.floor(amt);
  let remainder = amt - numDollars;
  const numQuarters = Math.floor(remainder / 0.25);
  remainder -= numQuarters * 0.25;
  const numDimes = Math.floor(remainder / 0.1);
  remainder -= numDimes * 0.1;
  const numNickles = Math.floor(remainder / 0.05);
  remainder -= numNickles * 0.05;
  const numPennies = Math.floor(remainder * 100);

  console.log(
    `Your change is ${numDollars} dollars, ${numQuarters} quarters, ${numDimes} dimes, ${numNickles}, and ${numPennies} pennies`
  );
};

如果利用数据结构,您可以使代码更易于阅读(并且更短)。例如,您可以使用一个数组来保存每个硬币的价值,而不是美元、季度等变量

如果您这样做,您将能够利用javascript提供的工具使您的生活更轻松。此外,在处理货币时,通常使用整数值的便士(一美元=100,四分之一=25,等等),这可以减少舍入误差

如果将这些值组成一个数组,表示您的面额,如:

let coins = [100, 25, 10, 5, 1]
然后,您只需使用
map()
在列表上循环,它将返回一个新列表,表示您需要的每个妖魔化的数量:

let due=1.51
让接收=3.00
让零钱=收到*100-到期*100//转换成便士以避免四舍五入
让硬币=[100,25,10,5,1]//面额——易于调整
让我们改变硬币=硬币。地图(硬币=>{
设n=数学地板(零钱/硬币)
零钱-=n*硬币
返回n
})
控制台日志(更改硬币)

//1美元、1个25美分、2个10美分、0个5美分、4便士
您的问题缺少相应的HTML!请与我们分享。你能显示预期的输入和输出吗?非常有用!我是编程新手,但我非常感谢您的建议,您的代码非常有用!我一直坚持使用镍币和便士面额,但还是设法挺过来了。如果有帮助,请投票并接受答案。谢谢。我是编程新手,我能从你的代码中看出他们是使程序工作的简单方法