0

我有以下代码行

double formId=2013519115027601;
txtEditFormID.Text = formid.ToString();  

它给了我输出

2.0135191150276E+15

如果我写

txtEditFormID.Text = formId.ToString("0.0", CultureInfo.InvariantCulture);

它给了我

 2013519115027600.0

但我想要标签文本

2013519115027601

怎么做?

4

4 回答 4

0

有时我希望以 double 形式处理计算,但我希望结果显示为 int 甚至舍入的数量,所以问题并不奇怪(假设给定的样本被简化以提出问题)。

我打算发布舍入的示例代码,但只使用内置方法 Math.Round() 更有意义。如上所述,您可以转换为 long,但如果需要(通常是,恕我直言),您将不会进行舍入。

于 2013-06-01T13:13:17.387 回答
0

txtEditFormId.Text = ((long)formId).ToString();

于 2013-06-17T07:49:08.413 回答
0

我没有足够的信息来说明你的formId变量的使用情况。

如上所示,当没有小数可以处理时,使用双精度数据类型似乎是错误的。因此,将变量重新定义为 long 数据类型将很容易,并且转换将是相同的。

long formId=2013519115027601;
txtEditFormID.Text = formid.ToString();  

更不用说代码使用整数而不是浮点数的额外好处了。
但是,如果您想保持当前的数据类型,那么

 txtEditFormID.Text = formId.ToString("R");

往返格式说明符

当使用此说明符格式化 Single 或 Double 值时,首先使用通用格式对其进行测试,Double 精度为 15 位,Single 精度为 7 位。如果该值成功解析回相同的数值,则使用通用格式说明符对其进行格式化。如果该值未成功解析回相同的数值,则对 Double 使用 17 位精度,对 Single 使用 9 位精度对其进行格式化。

于 2013-06-01T09:45:56.600 回答
0

您的第一个选择是将数据类型用作longor decimal。如果您想继续使用 double ,您可以做的其他事情是:

        double formId = 2013519115027601;
        string text = formId.ToString();
        txtEditFormID.Text = text.Replace(".",string.Empty);  

这将删除所有'.'字符

于 2013-06-01T10:10:25.063 回答