Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.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_Conditional - Fatal编程技术网

仅使用javascript条件语句返回更改

仅使用javascript条件语句返回更改,javascript,conditional,Javascript,Conditional,试图编写一个程序,返回硬币的精确变化 我使用的硬币是[1,0.50,0.20,0.10,0.05,0.02,0.01]。 我试图只使用条件语句。 我的问题是,最后一个“如果”语句没有按我所希望的那样工作,我不知道哪里出了问题 例如,对于当前数字,结果应为[1 x 0.20和2 x 0.02]。 取而代之的是返回我[1 x 0,20和1 x 0.02和1 x 0.01] var价格=0.76; 支付的风险价值=1; var a=已付价格; var oneLeva=0; var五分之一=0; va

试图编写一个程序,返回硬币的精确变化 我使用的硬币是[1,0.50,0.20,0.10,0.05,0.02,0.01]。 我试图只使用条件语句。 我的问题是,最后一个“如果”语句没有按我所希望的那样工作,我不知道哪里出了问题

例如,对于当前数字,结果应为[1 x 0.20和2 x 0.02]。 取而代之的是返回我[1 x 0,20和1 x 0.02和1 x 0.01]

var价格=0.76;
支付的风险价值=1;
var a=已付价格;
var oneLeva=0;
var五分之一=0;
var二十美分=0;
var=0;
变量5=0;
var twoCents=0;
var=0;
如果((a-1)>=0){
oneLeva+=1;
a-=1;
如果((a-1)>=0){
oneLeva+=1;
a-=1;
如果((a-1)>=0){
oneLeva+=1;
a-=1;
如果((a-1)>=0){
oneLeva+=1;
a-=1;
}  
}  
}  
}
如果((a-0.50)>=0){
五分之一+=1;
a-=0.50;
}
如果((a-0.20)>=0){
二十美分+=1;
a-=0.20;
如果((a-0.20)>=0){
二十美分+=1;
a-=0.20;
}  
}
如果((a-0.10)>=0){
腾讯+=1;
a-=0.10;
}
如果((a-0.05)>=0){
五个元素+=1;
a-=0.05;
}
如果((a-0.02)>=0){
二分+=1;
a-=0.02;
如果((a-0.02)>=0){
二分+=1;
a-=0.02;
}
}
如果((a-0.01)>0){
一美分+=1;
a-=0.01;
}
控制台日志(oneLeva);
控制台日志(五分之一);
控制台日志(20美分);
console.log(腾讯);
控制台日志(五个组件);
控制台日志(2美分);

控制台日志(1美分)欢迎使用JavaScript做数学

好的,现在发生的是,当你做
0.24-0.2
,结果不是
0.04
。相反,它是
0.03999999998
。然后从给出的
0.0199999999998
减去
0.02
,该值小于
2
,因此
if
语句出错,代码给出意外结果

这是因为JavaScript没有像大多数人预期的那样存储浮点数,这意味着它会丢失精度

您可以通过在代码的每个步骤中执行
console.log(a)
来看到这一点

我强烈建议你看看,它正好涵盖了你遇到的问题。有多种解决方案适合您

学校也是


玩得开心

JS和许多其他编程语言一样,对浮点数的处理效果很差。解决方法非常简单:只需将所有数字乘以100或1000等,直到没有浮点数,然后进行计算,然后将结果除以100或1000等等。

你到底为什么只想用条件句来做这件事?试图解决一个只寻找条件句的问题。谢谢你的解释。我设法找到了一个解决办法:)