Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 根据长度自动调整小数点_C#_.net - Fatal编程技术网

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;
    }