【问题标题】:Format function to display custom character(s) if number is zero如果数字为零,则格式化函数以显示自定义字符
【发布时间】:2012-07-03 06:18:19
【问题描述】:

我正在使用 Format 函数 (http://msdn.microsoft.com/en-us/library/59bz1f0h%28v=vs.90%29.aspx) 来格式化我的输出。目前我使用这种格式字符串:

 TestStr1 = Format(5459.4, "##,##0.00")
 TestStr2 = Format(0.4, "##,##0.00")
 TestStr3 = Format(0.0, "##,##0.00")

上述代码将分别返回“5,459.40”、“0.4”和“0.00”。现在,如果该值等于 0,我想改为显示“-”。如何在不使用 if-else 语句而仅使用 Format 函数的情况下实现该输出?

编辑:

除了 Pranay 的文章,我在底部找到了一篇来自 Microsoft 的文章。 http://msdn.microsoft.com/en-us/library/0c899ak8.aspx

【问题讨论】:

    标签: c# asp.net vb.net formatting


    【解决方案1】:

    全文:Format Number To Display

    使用

    ";"部分分隔符

    这允许根据数字符号显示数字。正如您在下面的代码中看到的那样,fmt 变量是我将在我的号码上应用的格式之前的第一个格式;用于正数,第二种格式用于负数,最后一种格式用于零值。基本上它的“正;负;零”格式。您可以在此代码的输出中看到它的作用。

    示例:

    double posValue = 1234;
    double negValue = -1234; 
    double zeroValue = 0;
    
    string fmt = "+##;-##;**Zero**";
    
    Console.WriteLine("value is positive : " + posValue.ToString(fmt));    
    Console.WriteLine();
    
    Console.WriteLine("value is negative : " +negValue.ToString(fmt));    
    Console.WriteLine();
    
    Console.WriteLine("value is Zero : " + zeroValue.ToString(fmt));
    Console.WriteLine();
    

    注意:

    在上面的示例中,您只需将 Zero 替换为“-”或您想要的字符。

    虽然代码在 c#.net 中,但同样的,你可以在 vb.net 中实现它的所有 ToString 函数格式更改。

    【讨论】:

    • 哈哈!从没想过会这么容易。就我而言,不会有负值,所以 "##,##0.00;;-" 就足够了。谢谢!
    • @dpp - 是的,这很容易,但大多数开发人员不知道我在这篇文章上写过的这种事情......
    • 我打开了另一个问题,我在你的文章和MSDN中找不到解决方案。 stackoverflow.com/questions/11305822/… 谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-03
    相关资源
    最近更新 更多