ToString(string) 没有格式化浮点数?正如我所期望的那样
ToString(string) not formatting a float? as I would expect it to
我正在使用 WinForms 应用程序,在格式化后在视图中显示一个字符串。
以下是我尝试格式化数字的方式:
reportData.VelocityRangeStart.ToString(reportData.Velocity.FormatString)
下面是在Visual Studio中使用Immediate Window的结果:
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?
类型。
我想你想用这个:
float VelocityRangeStart=12.5996475F;
string strVelocityRangeStart=VelocityRangeStart.ToString();
Console.WriteLine((Math.Ceiling(Double.Parse(strVelocityRangeStart)).ToString()));
可空类型甚至不应该 ToString()
重载格式字符串。您需要使用 reportData.VelocityRangeStart.Value.ToString(reportData.Velocity.FormatString)
来完成格式化工作。
并且不要忘记先检查值中的空值!所以
reportData.VelocityRangeStart.HasValue ? reportData.VelocityRangeStart.Value.ToString(reportData.Velocity.FormatString) : "is null"
我正在使用 WinForms 应用程序,在格式化后在视图中显示一个字符串。
以下是我尝试格式化数字的方式:
reportData.VelocityRangeStart.ToString(reportData.Velocity.FormatString)
下面是在Visual Studio中使用Immediate Window的结果:
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?
类型。
我想你想用这个:
float VelocityRangeStart=12.5996475F;
string strVelocityRangeStart=VelocityRangeStart.ToString();
Console.WriteLine((Math.Ceiling(Double.Parse(strVelocityRangeStart)).ToString()));
可空类型甚至不应该 ToString()
重载格式字符串。您需要使用 reportData.VelocityRangeStart.Value.ToString(reportData.Velocity.FormatString)
来完成格式化工作。
并且不要忘记先检查值中的空值!所以
reportData.VelocityRangeStart.HasValue ? reportData.VelocityRangeStart.Value.ToString(reportData.Velocity.FormatString) : "is null"