【发布时间】:2015-06-11 16:14:30
【问题描述】:
问题:
我想用未确定的小数精度格式化 Double 数字(例如 value.ToString("n2") ),但在所有小数为 0 的情况下消除/丢弃小数,
或者换句话说,如果所有小数都为零,则返回整数字符串而不是十进制字符串。
问题:
如何解决上面解释的十进制格式问题? (请参阅备注)
预期结果:
此代码将产生字符串1,00,但它应该产生字符串1:
Dim value As Double = 1.0R
Dim format As String = value.ToString("n2", CultureInfo.CurrentCulture.NumberFormat)
Debug.WriteLine(format)
此代码将生成字符串1,01,不需要更改,因为它有一个非零小数:
Dim value As Double = 1.01R
Dim format As String = value.ToString("n2", CultureInfo.CurrentCulture.NumberFormat)
Debug.WriteLine(format)
另一个小数精度为 2 的预期格式示例:
1
1,01
...
1,09
1,10 - Note the last zero is not eaten.
1,11
...
2
研究:
我一直在 MSDN 上阅读这些文档,但我没有看到如何解决这个问题。
Double.ToString Method (String)
Standard Numeric Format Strings
NumberFormatInfo.NumberDecimalDigits Property .
备注:
· 我正在寻找适当且有效的方法来执行此操作,我知道在结果字符串上执行Substring 或类似的操作来搜索或计算结果零。
· 如果这很重要,我想继续使用我当前文化的NumberFormat。
· 我将澄清,在我的真实场景中,我使用的是随机数,那么我不知道要格式化的值是小数点为零 (1,00) 还是非零小数点 (1,99) 和/或其十进制精度/长度。
【问题讨论】:
标签: .net vb.net formatting tostring numeric