Double.ToString returns 空为 0
Double.ToString returns empty for 0
谁能帮我理解为什么下面代码段的 "text" 变量为空,
double d = 0;
var text = d.ToString("##,###,###,###");
如果我将 d 的值更改为任何非零值,我将获得其正确的字符串表示形式。
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.
如果你想显示为00,000,000,000
,你可以使用The "0"
Custom Specifier代替。但请记住,如果此说明符与双精度值中的任何数值都不匹配,则此说明符置零。
这意味着 (15).ToString("00,000,000,000")
将生成 00,000,000,015
作为结果。
如果您想显示 0
以及其他值,只需将您的最后一位数字格式从 #
更改为 0
,例如 ##,###,###,##0
。
但是 我认为更好的方法可能是使用 The numeric "N"
format specifier。此说明符生成千位组分隔符及其大小、小数点分隔符及其大小(您可以使用 N0
省略此部分)可能的负号及其模式。
double d = 0;
var text = d.ToString("N0");
我还想在您的字符串格式中提及 ,
。你想像千位分隔符一样分组,(因为你不使用 any IFormatProvider
in your code) if your CurrentCulture
's NumberGroupSeparator
不同于 ,
字符,that[=将显示 56=] 个字符,而不是 ,
.
例如;我在土耳其,我当前的文化是 tr-TR
,这种文化的 .
作为 NumberGroupSeparator
。这就是为什么您的代码将在我的机器中生成 ##.###.###.###
格式而不是 ##,###,###,###
的结果。
对于字符串格式,#代表可选位置。例如,如果数字等于或大于 10,格式字符串如“#0”将显示第一个数字字符。因此,如果要显示数字,则需要将主题标签转换为零。
谁能帮我理解为什么下面代码段的 "text" 变量为空,
double d = 0;
var text = d.ToString("##,###,###,###");
如果我将 d 的值更改为任何非零值,我将获得其正确的字符串表示形式。
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.
如果你想显示为00,000,000,000
,你可以使用The "0"
Custom Specifier代替。但请记住,如果此说明符与双精度值中的任何数值都不匹配,则此说明符置零。
这意味着 (15).ToString("00,000,000,000")
将生成 00,000,000,015
作为结果。
如果您想显示 0
以及其他值,只需将您的最后一位数字格式从 #
更改为 0
,例如 ##,###,###,##0
。
但是 我认为更好的方法可能是使用 The numeric "N"
format specifier。此说明符生成千位组分隔符及其大小、小数点分隔符及其大小(您可以使用 N0
省略此部分)可能的负号及其模式。
double d = 0;
var text = d.ToString("N0");
我还想在您的字符串格式中提及 ,
。你想像千位分隔符一样分组,(因为你不使用 any IFormatProvider
in your code) if your CurrentCulture
's NumberGroupSeparator
不同于 ,
字符,that[=将显示 56=] 个字符,而不是 ,
.
例如;我在土耳其,我当前的文化是 tr-TR
,这种文化的 .
作为 NumberGroupSeparator
。这就是为什么您的代码将在我的机器中生成 ##.###.###.###
格式而不是 ##,###,###,###
的结果。
对于字符串格式,#代表可选位置。例如,如果数字等于或大于 10,格式字符串如“#0”将显示第一个数字字符。因此,如果要显示数字,则需要将主题标签转换为零。