具有任意精度的双精度字符串格式,固定的十进制位置
本文关键字:位置 十进制 格式 字符串 任意 精度 双精度 | 更新日期: 2023-09-27 18:13:29
我想写一个函数,它接受4个参数,并打印出一个满足以下条件的字符串:
- 小数应该位于字符串位置X(其中X是常量)。这样,当我打印一系列这样的字符串,小数点位置总是行向上
- 在实际操作中,双精度数通常在小数点左边最多有5位数字,包括负号。和小数点右边最多7位。
- 其他字段左对齐并具有固定的列宽。
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
我该怎么办?
这应该是你想要的:
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);
}