Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.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-将1675舍入到1,67-默认情况下,它舍入到1,68_Javascript_Jquery_Rounding - Fatal编程技术网

Javascript-将1675舍入到1,67-默认情况下,它舍入到1,68

Javascript-将1675舍入到1,67-默认情况下,它舍入到1,68,javascript,jquery,rounding,Javascript,Jquery,Rounding,你知道如何将1.675四舍五入到1.67 默认情况下,它舍入到1.68: 数学四舍五入(1.675*100)/100;//1.68 顺便说一句,如果这个数字是1.676,它仍然应该像预期的那样,四舍五入到1.68。我们需要更深入地了解,它首先出现了 定义Math.round()如下: 返回最接近参数且等于数学整数的数值如果两个整数值与参数的距离相等,则结果是更接近参数的数值+∞.如果参数已经是整数,则结果就是参数本身 粗体部分很重要,因为您将获得以下结果: 数学四舍五入(1.674*100)/

你知道如何将
1.675
四舍五入到
1.67

默认情况下,它舍入到
1.68

数学四舍五入(1.675*100)/100;//1.68

顺便说一句,如果这个数字是
1.676
,它仍然应该像预期的那样,四舍五入到
1.68

我们需要更深入地了解,它首先出现了

定义
Math.round()
如下:

返回最接近参数且等于数学整数的数值如果两个整数值与参数的距离相等,则结果是更接近参数的数值+∞.如果参数已经是整数,则结果就是参数本身

粗体部分很重要,因为您将获得以下结果:

数学四舍五入(1.674*100)/100;//1.67
数学四舍五入(1.675*100)/100;//1.68(错误)
数学四舍五入(1.676*100)/100;//1.68
数学四舍五入(-1.674*100)/100;//-1.67
数学四舍五入(-1.675*100)/100;//-1.67
数学四舍五入(-1.676*100)/100;//-1.68
看看它是如何工作的,因为你期待的是负数

如果要反转
1.675
舍入值,则不能使用
Math.floor()
,因为这将更改所有其他结果:

数学楼层(1.674*100)/100;//1.67
数学地板(1.675*100)/100;//1.67
数学地板(1.676*100)/100;//1.67(错误)
数学地板(-1.674*100)/100;//-1.68(错误)
数学地板(-1.675*100)/100;//-1.68(错误)
数学地板(-1.676*100)/100;//-1.68

我的解决方案是使用这个Javascript特性,它搜索最接近的值+∞

  • 记下你的号码
    1.675
  • 获取其绝对值
    1.675
    (这是负数)
  • 否定它
    -1.675
  • 使用
    round()+∞ <代码>-1.67
  • 如果最初为正数,则将其反算
    1.67
  • 概念证明:

    function\u round(值、精度){
    var移位=数学功率(10,精度);
    var negateBack=数学abs(值)/-值;
    返回数学取整(数学绝对值)*-1*移位)/移位*反回退;
    }
    _圆形(1.674,2);//1.67
    _圆形(1.675,2);//1.67
    _圆形(1.676,2);//1.68
    _圆形(-1.674,2);//-1.67
    _圆形(-1.675,2);//-1.67
    _圆形(-1.676,2);//-1.68
    
    Math.floor(1.675*100)/100谢谢@ASDFGerte,成功了。。你跑得真快!!这类信息是语言学习的一部分。我希望你不要每次懒洋洋地查看语言文档@ASDFGerte时都发问题,使用
    floor
    会破坏
    1.676
    @MisterJojo的结果检查我的答案,你会发现这并不是那么简单;)<代码>\u round(2.365,2)为我提供了
    2.37
    。这是预期的结果吗?这不是预期的结果,但这让我感到沮丧:
    console.log(-2.365*100);//236.50000000000003