SO:)
我有一些数字。我希望根据.
符号后的数字对它们进行舍入。问题是我不知道在.
之后会有多少零。
我知道函数toPrecision()
和toFixed()
,但它们必须传递参数。所以我必须知道我需要在小数点后得到多少迹象,但我不知道。
我想要实现的目标?
+++++++++++++++++++++++++++++++++++
+ before + after +
+++++++++++++++++++++++++++++++++++
+ 0.0072512423324 + 0.0073 +
+ 0.032523 + 0.033 +
+ 0.000083423342 + 0.000083 +
+ 15.00042323 + 15.00042 +
+ 1.0342345 + 1.034 +
+++++++++++++++++++++++++++++++++++
我怎么能做到这一点?
答案 0 :(得分:2)
尝试使用:
function roundAfterZeros(number,places){
var matches=number.toString().match(/\.0*/);
if(!matches)return number.toString();
return number.toFixed(matches[0].length-1+places);
}
这是一个解释
var matches = number.toString().match(/\.0*/)
在点(0
)之后检查零(.
)。
if(!matches)return number.toFixed(places);
如果没有点(.
),它必须是整数,所以我们只返回它(作为字符串以保持一致性)。
return number.toFixed(matches[0].length-1+places);
如果是小数,我们会将其四舍五入到零(0
)后的最接近的数字。
然后像roundAfterZeros(0.000083423342,2)
:
0.000083423342 to "0.000083"
1.0342345 to "1.034"
1 to "1"
0.5 to "0.50"
-300 to "-300"