翻倍.ToString返回0时为空
本文关键字:0时 返回 ToString 翻倍 | 更新日期: 2023-09-27 17:52:44
谁能帮我理解为什么"text"变量是空的下面的代码片段,
double d = 0;
var text = d.ToString("##,###,###,###");
如果我将d的值更改为任何非零值,我将得到其正确的字符串表示。
From The "#"
Custom Specifier
注意,该说明符从不显示非a的零即使0是字符串中唯一的数字,也是有效数字。它将显示零只有当它是一个有效的数字
如果您想将其显示为00,000,000,000
,则可以使用The "0"
Custom Specifier。但是请记住,如果它不匹配双精度体中的任何数值,则此说明符将置零。
这意味着(15).ToString("00,000,000,000")
将产生00,000,000,015
作为结果。
如果你想显示0
而不是其他值,只需将最后一位数字格式从#
更改为0
,如##,###,###,##0
。
但是在我看来,一个更好的方法可能是使用数字"N"
格式说明符。此说明符生成数千组分隔符及其大小,小数分隔符及其大小(您可以使用N0
省略此部分)可能的负号及其模式。
double d = 0;
var text = d.ToString("N0");
我还想提到,
在你的字符串格式。你想分组像几千分隔符,(因为你没有使用任何 IFormatProvider
在你的代码),如果你的CurrentCulture
的NumberGroupSeparator
不同于,
字符,那个字符将显示,而不是,
。
;我在土耳其,我现在的文化是tr-TR
,这个文化有.
作为NumberGroupSeparator
。这就是为什么您的代码将在我的机器中生成##.###.###.###
格式而不是##,###,###,###
格式的结果。
对于字符串格式,#表示可选位置。例如,如果数字等于或大于10,像"#0"这样的格式字符串将显示第一个数字字符。因此,如果您想显示您的数字,则需要将您的标签转换为零。