自定义数字格式字符串以始终显示符号

发布于 2024-07-10 02:41:33 字数 70 浏览 8 评论 0原文

有什么方法可以指定标准或自定义数字格式字符串来始终输出符号,无论是 +ve 还是 -ve (尽管它应该对零做什么,我不确定!)

Is there any way I can specify a standard or custom numeric format string to always output the sign, be it +ve or -ve (although what it should do for zero, I'm not sure!)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

白龙吟 2024-07-17 02:41:33

是的你可以。
有条件格式。 请参阅 MSDN 中的条件格式

例如:

string MyString = number.ToString("+0;-#");

用分号分隔的每个部分代表正数和负数

或者:

string MyString = number.ToString("+#;-#;0");

如果您不希望零有加号。

Yes, you can.
There is conditional formatting. See Conditional formatting in MSDN

eg:

string MyString = number.ToString("+0;-#");

Where each section separated by a semicolon represents positive and negative numbers

or:

string MyString = number.ToString("+#;-#;0");

if you don't want the zero to have a plus sign.

痴意少年 2024-07-17 02:41:33

请注意,使用条件格式时,负值不会自动获得符号。 你需要做

string MyString = number.ToString("+#;-#;0");

Beware, when using conditional formatting the negative value doesn't automatically get a sign. You need to do

string MyString = number.ToString("+#;-#;0");
眉目亦如画i 2024-07-17 02:41:33

您还可以在 string.Format(); 中使用格式字符串 格式字符串与索引之间用冒号 (':') 分隔。

var f = string.Format("{0}, Force sign {0:+#;-#;+0}, No sign for zero {0:+#;-#;0}", number);

对于数字 { +1, -1, 0 },这给出:

1,强制符号+1,无符号零+1
-1,强制符号 -1,零无符号 -1
0,强制符号+0,无符号零0

您还可以使用内插字符串代替 string.Format 来获得相同的结果:

var f = $"{number}, Force sign {number:+#;-#;+0}, No sign for zero {number:+#;-#;0}";

You can also use format strings in string.Format(); the format string is separated from the index with a colon (':')

var f = string.Format("{0}, Force sign {0:+#;-#;+0}, No sign for zero {0:+#;-#;0}", number);

For number { +1, -1, 0 } this gives:

1, Force sign +1, No sign for zero +1
-1, Force sign -1, No sign for zero -1
0, Force sign +0, No sign for zero 0

You can also use an interpolated string instead of string.Format to obtain the same result:

var f = $"{number}, Force sign {number:+#;-#;+0}, No sign for zero {number:+#;-#;0}";
戴着白色围巾的女孩 2024-07-17 02:41:33

与其他答案相反,如果您想获得 +1、-1、+0 (对于参数 1、-1、0),您需要使用以下格式:

String.Format("{0:+#;-#;+0}", 0));  // output: +0

或者

String.Format("{0:+0;-#}", 0));  // output: +0

如果您仅使用 +#;- # 它将仅显示 0 的 +(而不是 +0)。

“#”自定义说明符(位于 https://msdn.microsoft.com/en-us/library/0c899ak8.aspx)

请注意,此说明符从不显示非有效数字的零,即使零是字符串中唯一的数字。 仅当它是所显示数字中的有效数字时,它才会显示零。

另请记住,如果您需要任何小数精度,则需要像这样指定它:

String.Format("{0:+0.##;-#.##}", 0));  // output: +0

或者,如果您不希望始终显示零,像这样:

String.Format("{0:+0.00;-#.00}", 0));  // output: +0.00

Contrary to the other answers it seems that if you want to get +1, -1, +0 (for arguments 1, -1, 0) you need to use the format:

String.Format("{0:+#;-#;+0}", 0));  // output: +0

or

String.Format("{0:+0;-#}", 0));  // output: +0

If you use just +#;-# it will display just + (not +0) for 0.

The "#" Custom Specifier (at https://msdn.microsoft.com/en-us/library/0c899ak8.aspx)

Note that this specifier never displays a zero that is not a significant digit, even if zero is the only digit in the string. It will display zero only if it is a significant digit in the number that is being displayed.

Also please keep in mind that if you need any decimal precision you need to specify it like that:

String.Format("{0:+0.##;-#.##}", 0));  // output: +0

or, if you wan't zeros to always show up, like that:

String.Format("{0:+0.00;-#.00}", 0));  // output: +0.00
对你再特殊 2024-07-17 02:41:33

对于任何类型的数值表达式:

+###,###,###,###,###,###,###,###,###,##0.###,###,###,###,###,###,###,###,###,###;-###,###,###,###,###,###,###,###,###,##0.###,###,###,###,###,###,###,###,###,###;0

对于三种情况使用三个部分:正;负;零

该示例的其他方面:

  • 零没有符号。 您可以将其显示为任何内容,例如“零”。

  • 小于 1 的绝对值在小数点前有一个前导 0。 根据喜好进行调整。

  • 位数是指最大和最小绝对小数值。 根据口味进行调整。

  • 小数点字符是特定于文化的。 .NET 的替代品。

  • 分组分隔符是可选的。 这个角色是特定于文化的。 .NET 的替代品。 (这些位置也是特定于区域性的,但仅由格式字符串控制。)您还可以使用除格式特殊字符(包括 , . # 0)之外的任何其他字符。

For a numeric expression of any type:

+###,###,###,###,###,###,###,###,###,##0.###,###,###,###,###,###,###,###,###,###;-###,###,###,###,###,###,###,###,###,##0.###,###,###,###,###,###,###,###,###,###;0

Use three parts for three cases: positive;negative;zero

Other aspects of the example:

  • Zero is not signed. You could have it show as anything, such as "zero".

  • Absolute values less than one have a leading 0 before the decimal point. Adjust to taste.

  • Number of digits is for the largest and smallest absolute decimal values. Adjust to taste.

  • Decimal point character is culture-specific. .NET substitutes.

  • Grouping separators are optional. The character is culture-specific. .NET substitutes. (The positions are also culture-specific but that's only controlled by your format string.) You also use any other character except the special characters for Format (which include , . # 0).

橘虞初梦 2024-07-17 02:41:33

我无法发表评论,所以我在这里做一个答案(坚果信誉系统......)

您可以很好地使用 number.ToString("+0;-#") 来生成 UTC String TimeFormat

这里在 PowerShell 代码中显示

"$([System.DateTime]::Now.ToString('HH:mm:ss.fff'))$($([System.TimeZoneInfo]::Local.GetUtcOffset([System.DateTime]::Now).TotalMinutes.ToString('+0;-#')))"

谢谢@gcores https://stackoverflow.com/users/40256/gcores

I cannot comment so i Do an answer here (nuts reputation system ....)

You can Use number.ToString("+0;-#") very well to Produce the UTC String TimeFormat

Here showed in PowerShell code

"$([System.DateTime]::Now.ToString('HH:mm:ss.fff'))$($([System.TimeZoneInfo]::Local.GetUtcOffset([System.DateTime]::Now).TotalMinutes.ToString('+0;-#')))"

Thank you @gcores https://stackoverflow.com/users/40256/gcores

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文