十进制自定义格式字符串,具有固定精度,没有句号
本文关键字:精度 字符串 自定义 十进制 格式 | 更新日期: 2023-09-27 18:01:40
我遇到了一种情况,我认为这是你无法用自定义格式字符串做的。
但是我写的代码太恶心了,我想我还是要问一下。
我需要的是将十进制显示为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.67
显示为1234567
(只需省略小数点),请使用以下技巧:
decimal number = 12345.67M;
string s = string.Format("{0:0000000}", number * 100.0);
或
string s = string.Format("{0:F0}", number * 100.0); // zero decimal places
士气:不要乱动格式化产生的字符串,修改输入值,让格式化完成它的工作。
如果我没理解错的话,你是想把你的数字分开
str = number.ToSting ()将给出一个字符串你可以迭代并创建你的数字
str.split("。")会给你数字的两面吗然后,您将能够动态地构建您的stribg号,而无需强制使用