2016-07-06 45 views
-2

有人可以告訴我如何編寫一個函數,如果小數點後四位數字出現在小數點後面,則小數點後面加上0,直到小數點後四位數字長,修剪小數點後四位數字超過四位。這些是字符串。不要任何舍入。僅用於顯示,而不是計算。因此,例如:如何在小於4的小數點後添加零,如果更多,則刪除?

719.843797應該刪除最後兩位數字是719.8437
21.947應該增加一個0爲21.9470
1.3456無變化

+0

我認爲這真的意味着找到了小數點,然後確定適當的長度,以截斷或墊的字符串。首先填充4個0,然後執行截取到最終的想要的長度。 –

回答

0

使用toFixed或任何種類的繁殖可能導致四捨五入問題。作爲一個字符串處理數字可以避免它們。下面的函數傳遞給你的所有用例。但這是有點哈克。儘管我不確定是否有更好的方法來滿足您的要求。

function truncate4(x) { 
 
    var parts = x.toString().split('.'); // this is not i18n proof :(
 
    var integral = parts[0]; 
 
    var decimal = parts[1] || ''; // might be integer 
 
    return integral + '.' + (decimal + '0000').substr(0, 4) 
 
} 
 

 
console.log(truncate4(719.843797)); 
 
console.log(truncate4(21.947)); 
 
console.log(truncate4(1.3456));

0

這個功能應該與

function arrondir(num){ 
    var str = num.toString(); 
    var index = str.indexOf("."); 
    var decimal = str.substr(index+1); 
    var integer = str.substr(0, index); 
    if (decimal.length < 4) 
    for (var i = 0; i < 5 - decimal.length; i++) 
     decimal = decimal.concat("0"); 
    else decimal = decimal.substr(0,4); 
    return integer.concat(".").concat(decimal); 
} 

console.log(arrondir(719.84));   // 719.8400 
console.log(arrondir(719.84657963657)); // 719.8465 
相關問題