Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ToString(字符串)是否未格式化浮点?正如我所期望的那样_C#_Number Formatting - Fatal编程技术网

C# ToString(字符串)是否未格式化浮点?正如我所期望的那样

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"

我正在使用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?
类型。

我想您应该使用这个:

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本身,并且必须手动处理。我删除了最后一段中不必要的措辞,以便更强调我提到的类型,以备将来参考。