C# 根据长度自动调整小数点
我想创建一个函数,可以根据整数的长度设置十进制长度 假设我有这些数字:C# 根据长度自动调整小数点,c#,.net,C#,.net,我想创建一个函数,可以根据整数的长度设置十进制长度 假设我有这些数字: 100.12345 10.123456 1.1234567 整数的总长度应为5,小数点分隔符应调整为适合5个数字。这是我想要的输出: 100.12 10.123 1.1234 有什么简单的方法可以在C#中实现这一点吗 更新:在我的问题中更清楚地说明转换应该如何进行 (当前编号>格式化编号) 不确定这是否是一个好的答案,但它似乎有效 decimal FormatToMaxLength(decimal v, int maxL
100.12345
10.123456
1.1234567
整数的总长度应为5,小数点分隔符应调整为适合5个数字。这是我想要的输出:
100.12
10.123
1.1234
有什么简单的方法可以在C#中实现这一点吗
更新:在我的问题中更清楚地说明转换应该如何进行
(当前编号>格式化编号)
不确定这是否是一个好的答案,但它似乎有效
decimal FormatToMaxLength(decimal v, int maxLength)
{
string s = string.Format("{0}", v);
if(s.Length > maxLength + 1)
s = s.Substring(0, maxLength + 1);
decimal cv;
decimal.TryParse(s, out cv);
return cv;
}
一种修订版本,如果小数部分的数字超过要求的长度,则保留整个部分
decimal FormatToMaxLength(decimal v, int maxLength)
{
string s = string.Format("{0}", v);
string[] parts = s.Split(CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator[0]);
if(parts[0].Length >= maxLength)
s = parts[0];
else
s = s.Substring(0, Math.Min(s.Length, maxLength + 1));
decimal cv;
decimal.TryParse(s, out cv);
return cv;
}
测试的示例
decimal d = FormatToMaxLength(121.12233m, 5); // returns 121.12
decimal z = FormatToMaxLength(123456789.12345m, 5); // returns 123456789
我仍然不相信转换为字符串然后获取子集是一个好主意。让我们看看是否有人有更好的方法,或者看到我缺少的一个明显的解决方案
static string FormatToMaxLength(decimal d, int maxLength)
{
string s = d.ToString();
s = s.Remove(s.Length - (s.Length - maxLength + 1), s.Length - maxLength - 1);
return s;
}
这似乎也行得通你可以用c#来完成这项工作,向我们展示你的尝试。数字能大于5位吗?(123456?)如果数字是1,你想要什么。0@MortenOC,开始的好地方-@MortenOC-谷歌是你的朋友,MSDN也是:OP想要的是字符串,而不是小数。只需返回
s
这很容易,但还有其他问题。如果字符串的整数部分的字符数大于maxlength怎么办。。。例:1234567.9999?应该只返回12345?@adrianm“整数的总长度应该是5”。OP不表示字符串。@Steve谢谢!这实际上对十进制非常有效。返回类型应为十进制。我会更新OP,让我的问题更清楚。是的,我刚刚意识到:(
static string FormatToMaxLength(decimal d, int maxLength)
{
string s = d.ToString();
s = s.Remove(s.Length - (s.Length - maxLength + 1), s.Length - maxLength - 1);
return s;
}