我想显示十进制数的值,包括最后两位(或任何)可见数字(0s旁边)。
以下是我要存档的示例:
Input: 1
Output: 1
Input: 0.1
Output: 0.1
Input: 0.000123
Output: 0.00012 //stripped down the "3", only show nearest 2 digits (12)
Input: 0.00102
Output: 0.0010 //stripped down the "2", only show nearest 2 digits (10)
Input: 0.000000100000000000000009999
Output: 0.00000010
我试图对它进行硬编码,但我认为它不可靠。有没有更好的方法呢?
function strip(val, length){
var val = val.toString()
var integer = val.split(".")[0]
var decimals = val.split(".")[1]
var reachedFirstDec = false
var count = 0
var result = ""
var i = 0
while (count !== length) {
if (reachedFirstDec) {
count++
}
if (decimals[i] !== "0" && !reachedFirstDec) {
console.log(`Reached first non 0 character at ${i}`)
reachedFirstDec = true
count++
}
result = result + decimals[i]
i++
console.log(result);
}
return parseFloat(integer + "." + result)
}
感谢。
答案 0 :(得分:1)
你可以取十个数字的对数,然后将toString
调整为一,以获得想要的结果。
对于动态长度,你可以在数字的所需长度上使用闭包。
function x(l) {
return function (v) {
var e = Math.floor(Math.log10(v));
return e < 0 ? v.toFixed(l - 1 - e) : v;
}
}
var array = [1000, 1, 0.1, 0.0001232456, 0.0010234567, 0.000000100000000000000009999];
console.log(array.map(x(2)));
console.log(array.map(x(3)));
console.log(array.map(x(4)));
&#13;