C# ToString(字符串)是否未格式化浮点?正如我所期望的那样
我正在使用WinForms应用程序,格式化后在视图中显示字符串 以下是我尝试设置数字格式的方式:C# ToString(字符串)是否未格式化浮点?正如我所期望的那样,c#,number-formatting,C#,Number Formatting,我正在使用WinForms应用程序,格式化后在视图中显示字符串 以下是我尝试设置数字格式的方式: reportData.VelocityRangeStart.ToString(reportData.Velocity.FormatString) 以下是在Visual Studio中使用即时窗口的结果: reportData.VelocityRangeStart 12.5996475 // output reportData.Velocity.FormatString "#,##0.000"
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?
类型。我想您应该使用这个:
float VelocityRangeStart=12.5996475F;
string strVelocityRangeStart=VelocityRangeStart.ToString();
Console.WriteLine((Math.Ceiling(Double.Parse(strVelocityRangeStart)).ToString()));
可为null的类型甚至不应该使用格式字符串重载
ToString()。您需要使用reportData.VelocityRangeStart.Value.ToString(reportData.Velocity.FormatString)
来进行格式化工作
别忘了先检查值中的null!所以
reportData.VelocityRangeStart.HasValue ? reportData.VelocityRangeStart.Value.ToString(reportData.Velocity.FormatString) : "is null"
尝试一下,请查看指南-您发布的任何代码都非常混乱。reportData.VelocityRangeStart的类型是什么?将其强制转换为浮点是否会首先改变结果?如果你这样做,reportData.VelocityRangeStart.Value.ToString(reportData.Velocity.FormatString)
它仍然会这样做吗?@AlexeiLevenkov删除了这些笑话。如果一次粘贴整个内容,代码仍然无法编译。但是,如果你复制并粘贴每一行输入,你的指尖就有了便利。我敢肯定他们不希望这样。尝试查看它的输出。Math.天花(reportData.VelocityRangeStart).ToString()错误CS1503:参数1:无法从“float?”转换为“decimal”
非常感谢。这种行为是否表明存在bug?他提到的地方是使用可空类型@萨米或者它只是一支箭dark@Dot_NETPro也许它最后说的是类型?@JakeSmith这就是可空类型的工作方式。由于并非所有类型都必须使用格式字符串ToString(),我假设他们没有将其添加到Nullable本身,并且必须手动处理。我删除了最后一段中不必要的措辞,以便更强调我提到的类型,以备将来参考。