将浮点数格式化为2个小数位


210

我目前正在为客户网站构建销售模块。到目前为止,我已经获得了可以完美计算的销售价格,但是我遇到的问题是将输出格式化为2个小数位。

我目前在变量中调用它,以便可以将结果数据绑定到列表视图。

Sale = float.Parse(((x.Sale_Price - (x.Sale_Price * (x.Discount_Price / 100))).ToString())),

谁能告诉我如何将输出格式设置为小数点后两位?非常感谢!


检查这个我不确定,但可能会工作ToString(“#。##”);
Syeda 2011年

Answers:


467

您可以将格式传递给ToString方法,例如:

myFloatVariable.ToString("0.00"); //2dp Number

myFloatVariable.ToString("n2"); // 2dp Number

myFloatVariable.ToString("c2"); // 2dp currency

标准数字格式字符串


38
“ N2”和“ C2”将添加千个分隔符,而“ 0.00”则不会。
Marc K

5
以防万一(我当时不确定),所有这些用于格式化浮点值的方式都可以提供舍入。
RenniePet


36

String.Format("{0:#,###.##}", value)

来自C#中的字符串格式的一个更复杂的示例:

String.Format("{0:$#,##0.00;($#,##0.00);Zero}", value);

如果通过1243.50,将输出“ $ 1,240.00”。如果数字为负,则将输出相同的格式,但在括号中;如果数字为零,则将输出字符串“零”。



4
string outString= number.ToString("####0.00");

1
自定义格式的“ 0”和“#”之间有所不同。“ 0”:如果存在一个数字,则用相应的数字替换零;否则,为0。否则,结果字符串中将出现零。“#”:如果存在数字,则用相应的数字替换“#”符号;否则,结果字符串中不会出现数字。参考
刘镇玱

3

如前所述,您将需要使用格式化的结果。这是通过全部完成Write()WriteLine()Format(),和ToString()方法。

没有提到的是定点格式,它允许指定数量的小数位。如示例所示,它使用一个“ F”,并且在“ F”之后的数字是输出的小数位数。

Console.WriteLine("{0:F2}", 12);    // 12.00 - two decimal places
Console.WriteLine("{0:F0}", 12.3);  // 12 - ommiting fractions

2

这是针对您要使用插值字符串的情况。我之所以这样发布,是因为我厌倦了反复试验,最终每次需要格式化一些标量时都会浏览大量文档。

$"{1234.5678:0.00}"        "1234.57"        2 decimal places, notice that value is rounded
$"{1234.5678,10:0.00}"     "   1234.57"     right-aligned
$"{1234.5678,-10:0.00}"    "1234.57   "     left-aligned
$"{1234.5678:0.#####}"     "1234.5678"      5 optional digits after the decimal point
$"{1234.5678:0.00000}"     "1234.56780"     5 forced digits AFTER the decimal point, notice the trailing zero
$"{1234.5678:00000.00}"    "01234.57"       5 forced digits BEFORE the decimal point, notice the leading zero
$"{1234.5612:0}"           "1235"           as integer, notice that value is rounded
$"{1234.5678:F2}"          "1234.57"        standard fixed-point
$"{1234.5678:F5}"          "1234.56780"     5 digits after the decimal point, notice the trailing zero
$"{1234.5678:g2}"          "1.2e+03"        standard general with 2 meaningful digits, notice "e"
$"{1234.5678:G2}"          "1.2E+03"        standard general with 2 meaningful digits, notice "E"
$"{1234.5678:G3}"          "1.23E+03"       standard general with 3 meaningful digits
$"{1234.5678:G5}"          "1234.6"         standard general with 5 meaningful digits
$"{1234.5678:e2}"          "1.23e+003"      standard exponential with 2 digits after the decimal point, notice "e"
$"{1234.5678:E3}"          "1.235E+003"     standard exponential with 3 digits after the decimal point, notice "E"
$"{1234.5678:N2}"          "1,234.57"       standard numeric, notice the comma
$"{1234.5678:C2}"          "$1,234.57"      standard currency, notice the dollar sign
$"{1234.5678:P2}"          "123,456.78 %"   standard percent, notice that value is multiplied by 100
$"{1234.5678:2}"           "2"              :)

绩效警告

插值字符串很慢。以我的经验,这是顺序(从快到慢):

  1. value.ToString(format)+" blah blah"
  2. string.Format("{0:format} blah blah", value)
  3. $"{value:format} blah blah"
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.