双字符串格式文本格式

时间:2013-06-01 09:28:58

标签: c# double cultureinfo

我有以下代码行

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

它给我输出

2.0135191150276E+15

如果我写

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

它给了我

 2013519115027600.0

但我想要标签文字

2013519115027601

怎么做?

4 个答案:

答案 0 :(得分:0)

我没有足够的有关formId变量用法的信息。

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

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

更不用说代码使用整数而不是浮点数的额外好处 但是,如果要保持当前数据类型,则

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

The Round Trip Format Specifier

  

使用此说明符格式化Single或Double值时,它是   首先使用通用格式进行测试,精度为15位   单个精度的双精度和7位精度。如果值是   成功解析回相同的数值,它被格式化   使用通用格式说明符。如果值不成功   解析回相同的数值,使用17位数格式化   单精度的精度为双精度和9位精度。

答案 1 :(得分:0)

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

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

这将删除所有'.'字符

答案 2 :(得分:0)

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

我打算发布用于舍入的示例代码,但是使用内置方法Math.Round()更有意义。如上所述,你可以施展很长时间,但如果需要,你就不会进行舍入(通常是恕我直言)。

答案 3 :(得分:0)

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