JavaScript数学.round:不将对象四舍五入到十进制的1
JavaScript Math.round: Doesnt round object to 1 decimal
我在数组中有对象:
x[{a=2.99, b=5.11}{a=4.99, b=2.11}]
我希望它显示1十进制与数学四舍五入,因为我使用Math.round(x[0].a*10)/10;
它显示3,而它工作良好,如果我只使用数字作为Math.round(2.99*10)/10
。
为什么?
请尝试下面的代码
x[0].a.toString().match(/^-?'d+(?:'.'d{0,2})?/)[0]
您可以通过将正则表达式模式从{0, 2}
更改为{0, 1}
来舍入到1
这可能行得通——Math.floor()
和toFixed(1)
是这里的关键…舍入将导致原始输入变为最接近的整数。
function roundToTenth(inputVal) {
return Math.floor(inputVal * 10) * 0.1;
}
console.log(roundToTenth(2.99).toFixed(1));
除法通常比乘法慢-使用正则表达式匹配肯定会比乘法慢....
我在上面的代码中所做的就是说"把数字乘以10,然后把它变成一个没有小数的直整数,
2.99 * 10 = 29.9
变成29
最后,由于我使用* 0.1
操作,它变成了一个像2.900000004
一样的浮点数,我使用toFixed(1)
来去除所有那些烦人的0s
在末尾
相关文章:
- 我想在AngularJS应用程序中创建一个输入数字框,用户不应该在该框上键入十进制数字.(一个整数输入框)
- 将数字四舍五入到小数点后两位
- 将数字四舍五入到小数点后两位,以设置货币格式
- 四舍五入JavaScript计算
- 将数字四舍五入到两位小数
- AngularJS {{ val | number:1 }} 不四舍五入到小数点后 1 位
- 如何避免X轴显示十进制值
- 需要帮助编写在不使用toString的情况下将十进制转换为二进制的代码
- 文本框仅接受十进制值,并且应在十进制后追加2个零
- 我不知道此代码中的这些符号是什么意思.十进制到二进制
- 如何将二进制分数转换为十进制
- Javascript根据条件对数字进行四舍五入
- 如何使刻度四舍五入到最接近的 # 的倍数
- 在Javascript和PHP中,十进制到RGB
- 在javascript中接受十进制数字的Regex
- 如何防止 toFixed 四舍五入十进制数字
- Javascript 舍入十进制值,如果十进制值大于或等于 25,则四舍五入值加一个其他明智值保持原样
- 如果结果十进制后面跟着一系列9,则获取四舍五入到整数值的输入
- JavaScript数学.round:不将对象四舍五入到十进制的1
- 四舍五入到最接近的指定数字(十进制)