我正在寻找一种巧妙的方法来填充正或负十进制数字以创建固定长度的字符串,例如:
32.91 --> +032.9100
-2.1 --> -002.1000
0.32546 --> +000.3255
这很容易实现(我已经将我的尝试发布为答案),但是到目前为止,我所做的一切似乎都比应该做的要糟糕得多。我敢肯定那里有一些整齐的单线纸...
答案 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()
不信任,因为在某些情况下,如上面所述,它会失败。