ToString(字符串)不格式化浮点数?正如我所料

时间:2016-02-01 04:54:43

标签: c# number-formatting

我正在使用WinForms应用程序,在格式化后在视图中显示一个字符串。

以下是我尝试格式化数字的方法:

reportData.VelocityRangeStart.ToString(reportData.Velocity.FormatString)

以下是在Visual Studio中使用立即窗口的结果:

reportData.VelocityRangeStart
12.5996475    // output
reportData.Velocity.FormatString
"#,##0.000"    // output
reportData.VelocityRangeStart.ToString(reportData.Velocity.FormatString)
"12.59965"    // output
12.5996475f.ToString("#,##0.000")
"12.600"    // output

有人可以解释一下我缺少的东西吗?在这种情况下,我期待"12.600"。仅供参考:reportData.VelocityRangeStart属于float?类型。

2 个答案:

答案 0 :(得分:6)

Nullable类型甚至不应该使用格式字符串ToString()重载。您需要使用reportData.VelocityRangeStart.Value.ToString(reportData.Velocity.FormatString)来进行格式化工作。

并且不要忘记先检查值是否为null!所以

reportData.VelocityRangeStart.HasValue ? reportData.VelocityRangeStart.Value.ToString(reportData.Velocity.FormatString) : "is null"

答案 1 :(得分:-1)

我想你想用这个:

float VelocityRangeStart=12.5996475F;
string strVelocityRangeStart=VelocityRangeStart.ToString();
Console.WriteLine((Math.Ceiling(Double.Parse(strVelocityRangeStart)).ToString()));