繁体   English   中英

在C#中格式化double

[英]Format double in C#

我有双重价值。 我想将此值格式化为x.yz。 我该怎么做呢? 我不断被截断数字。 有人可以告诉我如何在C#中执行此操作吗?

谢谢!

小数点后的数字

本示例将双精度格式格式化为具有固定小数位数的字符串。 对于小数点后两位,请使用模式“ 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"

下一个示例将双精度格式格式化为带小数点后浮动位数的字符串。 例如,最多两个小数位使用模式“ 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"

千位分隔符

要使用千位分隔符将双精度格式转换为字符串,请在常规的浮点格式之前使用零和逗号分隔符,例如,模式“ 0,0.0”将数字格式化以使用千位分隔符并保留一位小数位。

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

零和一之间的浮点数可以两种格式设置,小数点前是否带零。 要格式化数字而没有前导零,请在点前使用#。 例如,“#。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/

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

例如,尝试:

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

请注意,结果值未截断,但在两种情况下均四舍五入,结果为"0.57"

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

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

尝试过使用ToString这样的事情吗?

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

尝试这个:

number.ToString("0.00");

还可以看看自定义数字格式字符串

我正在使用Math.Round方法

Math.Round(yourdouble, 2)

您还可以指定舍入规则。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM