我想编写一个接受4个参数的函数,并打印出满足以下条件的字符串:
到目前为止,我已经能够处理4列中的3列;但是,我在使用十进制参数时遇到问题。我似乎无法弄清楚如何将任意精度与固定的小数位组合。这是我到目前为止所得到的:
public String PrintRow(string fieldName, string fieldUnit, double value, string description){
return string.Format(
" {0,4}.{1,-4} {2,8:####0.0000####} : {3,-25}\n",
fieldName, fieldUnit, value, description);
}
以下是我希望能够做出的一些示例输出:
STRT.M 57.4000 : Start
STOP.M 485.8000 : Stop
STEP.M 0.1524 : Step
SMTN.FT -111.2593615 : Something Cool
我该怎么办?
答案 0 :(得分:2)
这可以给你你想要的东西:
public static string PrintRow(string token, string unit, double value, string desc)
{
// convert the number to a string and separate digits
// before and after the decimal separator
string[] tokens = value
.ToString()
.Split(new string[] { CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator }, StringSplitOptions.RemoveEmptyEntries);
// calculate padding based on number of digits
int lpad = 11 - tokens[0].Length;
int rpad = 19 - tokens[1].Length;
// format the number only
string number = String.Format("{0}{1}.{2}{3}",
new String(' ', lpad),
tokens[0],
tokens[1],
new string(' ', rpad));
// construct the whole string
return string.Format(" {0,-4}.{1,-4}{2} : {3,-23}\n",
token, unit, number, desc);
}