JavaScript:在.5个案例中向下舍入

时间:2016-03-06 00:58:24

标签: javascript decimal rounding

我处于JavaScript函数生成数字的情况,例如2.5。我希望将这五点数字向下舍入到2,而不是Math.round的结果,在这种情况下总是向上舍入(忽略奇怪的规则),产生2.有没有这样做比在舍入前从数字减去0.01更优雅的方式?谢谢。

4 个答案:

答案 0 :(得分:9)

将输入和输出否定为<div class="form-group"> <div class="col-sm-offset-3 col-sm-9"> <div id="cuslocation_accountreg_business"> <label class="required radio-inline" for="cuslocation_accountreg_business_0"> <input type="radio" id="cuslocation_accountreg_business_0" name="cuslocation[accountreg][business]" required="required" value="0" />Business </label> <label class="required radio-inline" for="cuslocation_accountreg_business_1"> <input type="radio" id="cuslocation_accountreg_business_1" name="cuslocation[accountreg][business]" required="required" value="1" />Private </label> </div> </div> </div>

Math.round

更详细地说:JavaScript的var result = -Math.round(-num); 具有不寻常的属性,无论是正面还是负面,它都可以将中间情况向正无穷大发展。例如,Math.round将舍入到2.5,但3.0将舍入到-2.5。这是一种不常见的舍入模式:圆形中途案例远离零(因此-2.0将舍入到-2.5)或更接近的偶数整数更为常见。

然而,它确实有一个很好的属性,让它适应圆形中途情况而不是负向无穷大:如果那是你想要的,那么你所要做的就是否定两者输入和输出:

示例:

&#13;
&#13;
-3.0
&#13;
&#13;
&#13;

答案 1 :(得分:2)

这样做:

var result = (num - Math.Floor(num)) > 0.5 ? Math.Round(num):Math.Floor(num);

答案 2 :(得分:0)

另一种方法是使用实​​数(而不是0.2使用20,0.02使用2等),然后添加将分割结果的floatPoints变量(在你的情况下它是2)。因此,您可以作为Number /(10 ^ floatingPoints)运行。 这种解决方案适用于外汇公司。

答案 3 :(得分:0)

你也可以使用这个函数进行舍入,没有小数部分和.5向下规则(只有正数):

function customRound(number) {
   var decimalPart = number % 1;
   if (decimalPart === 0.5)
      return number - decimalPart;
   else
      return Math.round(number);
}

抱歉我的英语。