我目前正在为客户网站建立一个销售模块。到目前为止,我已经得到销售价格计算完美,但我遇到的问题是格式化输出到2位小数。
我目前在一个变量中调用它,以便我可以将结果数据绑定到一个列表视图。
Sale = float.Parse(((x.Sale_Price - (x.Sale_Price * (x.Discount_Price / 100))).ToString())),
谁能告诉我如何格式化输出到小数点后2位??很多谢谢!
我目前正在为客户网站建立一个销售模块。到目前为止,我已经得到销售价格计算完美,但我遇到的问题是格式化输出到2位小数。
我目前在一个变量中调用它,以便我可以将结果数据绑定到一个列表视图。
Sale = float.Parse(((x.Sale_Price - (x.Sale_Price * (x.Discount_Price / 100))).ToString())),
谁能告诉我如何格式化输出到小数点后2位??很多谢谢!
当前回答
如前所述,您将需要使用格式化的结果;这都是通过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
其他回答
如前所述,您将需要使用格式化的结果;这都是通过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
这适用于你想要使用插值字符串的情况。实际上,我发布这个是因为我厌倦了反复试验,最终每次我需要格式化某个标量时都要翻阅大量的文档。
$"{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" :)
性能警告
插值字符串很慢。根据我的经验,顺序是(快到慢):
value.ToString(format)+" blah blah" 字符串。格式("{0:Format} blah blah", value) $"{value:format} blah blah"
我喜欢用
$"{value:0.##}
它只在这两个位置有值时才显示两个小数。
例子:
$"{50.255:0.##} //50,25
$"{50.2:0.##} //50,2
$"{50.00:0.##} //50
String.Format(“{0:#,# # #。# #}”,值)
下面是c#中字符串格式化的一个更复杂的例子:
String.Format(“{0:$ #,# # 0.00;($ #,# # 0.00);零}”,值); 如果通过1243.50,将输出“$1,240.00″”。如果数字为负数,它将输出相同的格式,但在括号中,如果数字为零,它将输出字符串“Zero”。
private float LimitDecimalPlace(double number,int limitPlace)
{
float result = 0;
string sNumber = number.ToString();
int decimalIndex = sNumber.IndexOf(".");
if (decimalIndex != -1)
{
sNumber = sNumber.Remove(decimalIndex + limitPlace + 1);
}
result = float.Parse(sNumber);
return result;
}