Javascript:填充十进制数字的开头和结尾以组成固定长度的字符串

时间:2018-09-15 19:37:57

标签: javascript

我正在寻找一种巧妙的方法来填充正或负十进制数字以创建固定长度的字符串,例如:

32.91    --> +032.9100
-2.1     --> -002.1000
 0.32546 --> +000.3255

这很容易实现(我已经将我的尝试发布为答案),但是到目前为止,我所做的一切似乎都比应该做的要糟糕得多。我敢肯定那里有一些整齐的单线纸...

2 个答案:

答案 0 :(得分:1)

您可以检查数字的符号,并在 Set objShell = WScript.CreateObject("WScript.Shell") rv = objShell.Run(chr(34)&"c:\windows\system32\Mspaint.exe"&chr(34), 1 , False) If rv <> 0 Then MsgBox "Failed : " & rv End If WScript.Sleep 2000 objShell.Run "taskkill /f /im ""Mspaint.exe"" ",0,False Set objShell = Nothing 上加上所需的右数字并添加必要的左填充。返回,并在字符串前面加上符号。

toFixed

答案 1 :(得分:1)

与我自己的解决方案(略长)相比,这是Nina的解决方案:

const fix1 = function (value, left, right) {
    return (value < 0 ? '-' : '+') + Math.abs(value).toFixed(right).padStart(left + right + 1, '0');
};
const fix2 = function (value, left, right) {
    var padded = Math.round(Math.abs(value) * Math.pow(10, right)).toString().padStart(left + right, '0');
    var withPoint = padded.substr(0, left) + '.' + padded.substr(left);
    var withSign = (value < 0 ? '-' : '+') + withPoint;
    return withSign;
};
console.log(fix1(6.55, 3, 1));  // +006.5
console.log(fix2(6.55, 3, 1));  // +006.6

我对toFixed()不信任,因为在某些情况下,如上面所述,它会失败。