【问题标题】:How to force a sign when formatting an Int in c#在 c# 中格式化 Int 时如何强制使用符号
【发布时间】:2011-03-14 16:06:33
【问题描述】:

我想格式化一个整数 i (-100 < i < 100),这样:

-99 格式为“-99”
9 种格式为“+09”
-1 格式为“-01”
0 格式为“+00”

i.ToString("00")

接近但在 int 为正数时不添加 + 号。

有什么方法可以做到这一点而不明确区分 i >= 0i < 0?

【问题讨论】:

标签: c# tostring


【解决方案1】:

试试这个:

i.ToString("+00;-00;+00");

当用分号 (;) 分隔时,第一部分适用于正值,第二部分适用于负值,第三部分适用于零 (0)。

请注意,如果您希望零的格式与正数相同,则可以省略第三部分。如果您希望负数的格式与正数相同,但希望零的格式不同,则第二部分也可以省略。

参考:MSDN Custom Numeric Format Strings: The ";" Section Separator

【讨论】:

  • OP 希望0 显示为“+00”,而不是普通的“00”。
  • 看来i.ToString("+00;-00"); 就够了。 0 在这里被认为是积极的。
  • 第一部分如何应用于正值和零,第三部分如何应用于零?您怎么知道使用该逻辑实际上将什么应用到零?
  • @itsme86 7 年,没有人注意到...谢谢,我更新了一点。
【解决方案2】:

你也许可以用这样的格式字符串来做到这一点..

i.ToString("+00;-00");

这将产生以下输出..

2.ToString("+00;-00");    // +02
(-2).ToString("+00;-00"); // -02
0.ToString("+00;-00");    // +00

看看MSDN documentation for Custom Numeric Format Strings

【讨论】:

  • OP 希望0 显示为“+00”,而不是普通的“00”。
  • @LukeH 你是对的,我的错误,修改答案以反映这一点。
【解决方案3】:

试试这样的:

i.ToString("+00;-00");

一些例子:

Console.WriteLine((-99).ToString("+00;-00"));    // -99
Console.WriteLine(9.ToString("+00;-00"));        // +09
Console.WriteLine((-1).ToString("+00;-00"));     // -01
Console.WriteLine((0).ToString("+00;-00"));      // +00

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-15
    • 2012-07-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多