【发布时间】:2015-07-09 05:42:35
【问题描述】:
我遇到了一种情况,我认为您无法使用自定义格式字符串。
但是我写的代码太恶心了,我想我还是会问的。
我需要将小数显示为 6 位或 7 位字符串,如下所示:
number = 12345.67M
(optional)
tenthousands thousands hundreds tens ones tenths hundredths
1 2 3 4 5 6 7
这是我为实现此目的而编写的代码:
public static string ConvertDecimalToString(decimal easting, int length)
{
var formatString = "{0:0000.00}";
var numberAsString = string.Format(formatString, easting);
var removePeriod = numberAsString.Replace(".", "");
if (removePeriod.Length > length)
{
return removePeriod.Substring(removePeriod.Length - length, length);
}
else
{
return removePeriod.PadLeft(length, '0');
}
}
预期的输入和输出:
Input Output(6) Output(7)
912345.67M 234567 1234567
12345.67M 234567 1234567
1234.56M 123456 0123456
1234.5M 123450 0123450
1234M 123400 0123400
234M 023400 0023400
【问题讨论】:
-
那么对于输入 = 12345.67M 和输入 = 1234.56M,您的预期输出是什么样的?
-
为什么您认为自定义格式字符串不起作用?
-
“234567”背后的原因是什么(输出(6),第一个示例)。即删除(非常)有效数字?
-
是的,删除最高和最低有效数字,因为它们不太可能在生成的字符串中引入冲突。
-
那么这里的大局是什么?你想达到什么目的?这个长度有限的字符串有什么用?
标签: c# decimal format-string