在C#中格式化为double

时间:2011-02-06 21:24:33

标签: c#

我有双倍价值。我想以x.yz的格式格式化此值。我该怎么做呢?我一直在截断数字。有人能告诉我如何在C#中做到这一点吗?

谢谢!

6 个答案:

答案 0 :(得分:9)

小数点后的数字

此示例将double格式化为具有固定小数位数的字符串。对于两位小数,请使用模式“0.00”。如果浮点数的小数位数较少,则右侧的其余数字将为零。如果它有更多小数位,则数字将被舍入。

// just two decimal places
String.Format("{0:0.00}", 123.4567);      // "123.46"
String.Format("{0:0.00}", 123.4);         // "123.40"
String.Format("{0:0.00}", 123.0);         // "123.00"

下一个示例将double格式化为带有浮动小数位数的字符串。例如。最大两位小数使用模式“0。##”。

// max. two decimal places
String.Format("{0:0.##}", 123.4567);      // "123.46"
String.Format("{0:0.##}", 123.4);         // "123.4"
String.Format("{0:0.##}", 123.0);         // "123"

小数点前的数字

如果您希望浮点数在小数点前具有任何最小位数,请在小数点前使用N倍零。例如。模式“00.0”将浮点数格式化为字符串,小数点前至少有两位数,之后是一位数。

// at least two digits before decimal point
String.Format("{0:00.0}", 123.4567);      // "123.5"
String.Format("{0:00.0}", 23.4567);       // "23.5"
String.Format("{0:00.0}", 3.4567);        // "03.5"
String.Format("{0:00.0}", -3.4567);       // "-03.5"

数千个分隔符

要使用千位分隔符将double格式化为字符串,请在常用的浮点格式化模式之前使用零和逗号分隔符,例如pattern“0,0.0”格式化数字以使用千位分隔符并且有一个小数位。

String.Format("{0:0,0.0}", 12345.67);     // "12,345.7"
String.Format("{0:0,0}", 12345.67);       // "12,346"

<强>零

0到1之间的浮点数可以用两种方式格式化,在小数点前有或没有前导零。要在没有前导零的情况下格式化数字#在点之前#。例如,“#。0”格式编号为小数点后一位,小数点前为0到N位数(例如“.5”或“123.5”)。

以下代码显示如何格式化为零(双重类型)。

String.Format("{0:0.0}", 0.0);            // "0.0"
String.Format("{0:0.#}", 0.0);            // "0"
String.Format("{0:#.0}", 0.0);            // ".0"
String.Format("{0:#.#}", 0.0);            // ""

将数字与空格对齐

要将浮点数对齐,请在冒号前使用逗号“,”选项。输入逗号后跟多个空格,例如“0,10:0.0”(这只能在String.Format方法中使用,而不能在double.ToString方法中使用)。要将数字左对齐,请使用负数空格。

String.Format("{0,10:0.0}", 123.4567);    // "     123.5"
String.Format("{0,-10:0.0}", 123.4567);   // "123.5     "
String.Format("{0,10:0.0}", -123.4567);   // "    -123.5"
String.Format("{0,-10:0.0}", -123.4567);  // "-123.5    "

自动格式化负数和零

如果需要使用自定义格式表示负浮点数或零,请使用分号分隔符“;”将模式拆分为三个部分。第一部分格式为正数,第二部分格式为负数,第三部分格式为零。如果省略最后一节,则使用第一部分格式化零。

String.Format("{0:0.00;minus 0.00;zero}", 123.4567);   // "123.46"
String.Format("{0:0.00;minus 0.00;zero}", -123.4567);  // "minus 123.46"
String.Format("{0:0.00;minus 0.00;zero}", 0.0);        // "zero"

http://www.csharp-examples.net/string-format-double/

答案 1 :(得分:5)

使用格式字符串解释如下:

例如,尝试:

  • (0.56789).ToString("F2")
  • (0.56789).ToString("0.00")

请注意,结果值不会被截断,而是在两种情况下都会舍入,从而产生"0.57"

答案 2 :(得分:3)

string.Format("{0:0.00}",yourdouble);

也许你会发现在你办公室的某处http://john-sheehan.com/blog/wp-content/uploads/msnet-formatting-strings.pdf找到有用的纸张

答案 3 :(得分:2)

使用ToString尝试这样的事情?

doubleNumber = -1898300.1937;
Console.WriteLine(doubleNumber.ToString("F2", CultureInfo.InvariantCulture));  
// Displays -1898300.19

答案 4 :(得分:0)

试试这个:

number.ToString("0.00");

另请查看Custom Numeric Format Strings

答案 5 :(得分:0)

我正在使用Math.Round Method

Math.Round(yourdouble, 2)

您还可以指定舍入规则。