格式化带小数的双精度C#

时间:2012-03-02 07:56:21

标签: c# formatting double decimal

是否可以格式化double,所以他没有机会将文本2140.76改为214076而是让它为2140.76?

我不能使用','作为十进制数字,因为我正在阅读的整个文本文件都是使用'。'的数字。用于分隔小数,每天10000条记录,所以......

修改

double natMB = 0;
boolean check = double.TryParse(splitline[8], NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out natMB);
if (check == false)
{
   natMB = 0;
}
else
{
   natMB = natMB * 1024;
}

double intMB = 0;
boolean check2 = double.TryParse(splitline[9], NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out intMB);
if (check2==false)
{
   intMB=0;
}
else
{
   intMB = intMB * 1024;
}

0值是必要的,因为我需要在SQL语句中输入这些值,它们需要显示为0,而不是null。

4 个答案:

答案 0 :(得分:1)

您可以使用不变文化格式化带小数句点的数字,无论您的本地文化设置如何:

string formatted = someDouble.ToString(CultureInfo.InvariantCulture);

答案 1 :(得分:1)

您的问题不明确,您是否要使用点小数分隔符解析字符串中的double?

如果是,请尝试:

double.Parse("2140.76", CultureInfo.InvariantCulture)

答案 2 :(得分:0)

从这里开始阅读:
http://msdn.microsoft.com/en-us/library/system.globalization.numberformatinfo.aspx

基本上,您创建的NumberFormatInfo可以自定义以与String.Format一起使用,以使用您想要的任何格式。

答案 3 :(得分:0)

  

是否可以格式化双,因此他不会将文本2140.76改为214076而是   让它成为2140.76?

是。让我玩无知 - 我不知道你怎么能问这个问题并且给出了粗略的格式化方法。

  

我不能使用','作为十进制数字,因为我正在阅读的整个文本文件都是数字   使用'。'用于分隔小数,每天10000条记录,所以......

所以问题可能在于你手边的文化问题和另一方的无知开发者。无知,因为交换的文件应始终采用英文格式,以避免这种情况。

无论如何,基本上: *将您在线程中的文化信息更改为英语或 *使用英语文化信息进行解析和文本生成。

阅读您使用的方法的文档 - 其中包括允许您调整格式的文件。