Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.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_String Formatting_Number Formatting - Fatal编程技术网

C# 用四位数字格式化十进制,除非这些数字是零

C# 用四位数字格式化十进制,除非这些数字是零,c#,.net,string-formatting,number-formatting,C#,.net,String Formatting,Number Formatting,我们有一个具体的格式问题,我们希望以最有效的方式解决 我们必须将十进制设置为小数点后的四位数,除非没有小数,因为在这种情况下,十进制应该设置为小数点后的两位数 我将举几个例子来解释: 1.234应打印为1.234所有数字 虽然 1.000应打印为1.00,限制为两位数 和 1.500应打印为1.50,限制为两位数 换句话说:我们希望删除小数点后所有不必要的零,但确保逗号后始终保留两位数字 我猜在.NET中已经提供了这样做的简单方法?如果是这样,我想我可以使用.ToString函数将其转换为字符串

我们有一个具体的格式问题,我们希望以最有效的方式解决

我们必须将十进制设置为小数点后的四位数,除非没有小数,因为在这种情况下,十进制应该设置为小数点后的两位数

我将举几个例子来解释:

1.234应打印为1.234所有数字 虽然 1.000应打印为1.00,限制为两位数 和 1.500应打印为1.50,限制为两位数

换句话说:我们希望删除小数点后所有不必要的零,但确保逗号后始终保留两位数字

我猜在.NET中已经提供了这样做的简单方法?如果是这样,我想我可以使用.ToString函数将其转换为字符串并解析小数点后的所有内容?或者有人有更有效的想法吗?

这个怎么样

    string SetDecimals(decimal val)
    {
        var decimalStr = val.ToString().Split(new string[] { System.Threading.Thread.CurrentThread.CurrentCulture.NumberFormat.NumberDecimalSeparator }, StringSplitOptions.None)[1];
        if (decimalStr.Length == 4 && !decimalStr.EndsWith("00"))
            return string.Format("{0:N4}", val);
        else if(decimalStr.Length == 3 && !decimalStr.EndsWith("0"))
            return string.Format("{0:N3}", val);
        else
            return string.Format("{0:N2}", val);
    }
这个怎么样

    string SetDecimals(decimal val)
    {
        var decimalStr = val.ToString().Split(new string[] { System.Threading.Thread.CurrentThread.CurrentCulture.NumberFormat.NumberDecimalSeparator }, StringSplitOptions.None)[1];
        if (decimalStr.Length == 4 && !decimalStr.EndsWith("00"))
            return string.Format("{0:N4}", val);
        else if(decimalStr.Length == 3 && !decimalStr.EndsWith("0"))
            return string.Format("{0:N3}", val);
        else
            return string.Format("{0:N2}", val);
    }
使用以下格式说明符调用decimal.ToString方法时,输出应为2到4个小数:

decimal d = 1.234m;
string output = d.ToString("0.00##");
有关数字格式说明符的更多信息,请参阅MSDN

标准数字格式字符串:

自定义数字格式字符串:

使用以下格式说明符调用decimal.ToString方法时,输出应为2到4位小数:

decimal d = 1.234m;
string output = d.ToString("0.00##");
有关数字格式说明符的更多信息,请参阅MSDN

标准数字格式字符串:


自定义数字格式字符串:

d.ToString0.00?这符合你的要求吗?我对它做了一些修改,它似乎完全符合我的要求。非常感谢你。对于这种格式是否有参考?请参考我的答案d.ToString0.00?这符合你的要求吗?我对它做了一些修改,它似乎完全符合我的要求。非常感谢你。对于这些格式是否有参考?请参考我的答案。虽然这是我自己写的答案,但我选择mm8的答案是因为它的简单。虽然这是我自己写的答案,我选择mm8的答案是因为它简单。