我处于JavaScript函数生成数字的情况,例如2.5
。我希望将这五点数字向下舍入到2
,而不是Math.round
的结果,在这种情况下总是向上舍入(忽略奇怪的规则),产生2.有没有这样做比在舍入前从数字减去0.01更优雅的方式?谢谢。
答案 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
)或更接近的偶数整数更为常见。
然而,它确实有一个很好的属性,让它适应圆形中途情况而不是负向无穷大:如果那是你想要的,那么你所要做的就是否定两者输入和输出:
示例:
-3.0
&#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);
}
抱歉我的英语。