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

Javascript 自定义舍入逻辑

Javascript 自定义舍入逻辑,javascript,regex,math,logic,rounding,Javascript,Regex,Math,Logic,Rounding,我想构建一个舍入逻辑,通过以下给定的测试用例: 0.045的结果:4 结果为0.955:96 0.995的结果:100 结果为0.01:1 结果为0.1:10 结果为0.175:18 0.007的结果:1 结果为0.818:82 当前代码: 函数舍入(num){ 变量ld=(数值*1000)%100 如果(ld>=50){ 返回(数学单元(num*100)); }否则{ 返回值(数学楼层数*100); } } 文件。写入(“0.045的结果:+舍入(0.045)+””; 文件。写入(“0.95

我想构建一个舍入逻辑,通过以下给定的测试用例:
0.045的结果:4
结果为0.955:96
0.995的结果:100
结果为0.01:1
结果为0.1:10
结果为0.175:18
0.007的结果:1
结果为0.818:82

当前代码:

函数舍入(num){
变量ld=(数值*1000)%100
如果(ld>=50){
返回(数学单元(num*100));
}否则{
返回值(数学楼层数*100);
}
}
文件。写入(“0.045的结果:+舍入(0.045)+”
”; 文件。写入(“0.955的结果:“+舍入(0.955)+”
”; 文件。写入(“0.995的结果:“+舍入(0.995)+”
”; 文件。写入(“0.01的结果:+舍入(0.01)+”
”; 文件。写入(“0.1的结果:+舍入(0.1)+”
”; 文件。写入(“0.175的结果:“+舍入(0.175)+”
”; 文件。写入(“0.007的结果:“+舍入(0.007)+”
”; 文件。写入(“0.818的结果:+舍入(0.818)+”
let num_list=[
0.045, // 4
0.955, // 96
0.995, // 100
0.01, // 1
0.1, // 10
0.175, // 18
0.007, // 1
0.818, // 82
];
函数舍入(num){
设ld=num*1000;
常量final=(\u ld,\u num)=>{
如果(_ld>=50){
返回(数学单元(_num*100));
}否则{
返回(数学楼层(_num*100));
}
};
如果(ld>100 | | ld<10){
/*
如果第一个ld太大或太小,则将数字向前提高1位数*10
0.818 * 1000 => 818
(818 > 100) => (818 * 10) % 100 = 80
(80>=50)数学单元(0.818*100)=0.82
0.007 * 1000 => 7
(7 < 10) => (7 * 10) % 100 = 70
(70>=50)数学单元(0.007*100)=1
*/
ld=(ld*10)%100;
返回最终值(ld,num);
}否则,如果(ld>=10){
ld=ld%100;
返回最终值(ld,num);
}
}

num_list.forEach(num=>console.log(`${num}=>${roundOff(num)}')为什么0.045应该返回4而不是5?是否有一个特定的原因,您希望0.045向下舍入为4,但所有其他(0.955、0.995、0.175、0.818和0.007)向上舍入?试图在这里辨别一个逻辑,我本以为您希望舍入(0.045)返回5。如果0.045的正确返回值是5,那么下面的forumula应该执行以下操作:
函数舍入(num){return Math.round(1000*num/10);}
如果舍入(0.045)需要返回4,我看不出一个简单的方法来解决这个问题,除非你能用一个规则而不仅仅是示例来指定你的需求。@UrsBeeli要求是:十进制到##0%数字格式。如果这样的话,唤醒师仍然会期望0.045按照你指定的4取整为5。