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

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

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

谁能告诉我如何格式化输出到小数点后2位??很多谢谢!


当前回答

    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;
    }

其他回答

您需要做的第一件事是使用十进制类型而不是浮点类型来计算价格。使用浮点数是绝对不可接受的,因为它不能准确地表示大多数小数。

一旦你这样做了,Decimal.Round()可以用来四舍五入到2位。

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

如前所述,您将需要使用格式化的结果;这都是通过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

你可以把格式传递给ToString方法,例如:

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

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

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

标准数字格式字符串

我喜欢用

$"{value:0.##}

它只在这两个位置有值时才显示两个小数。

例子:

$"{50.255:0.##} //50,25
$"{50.2:0.##}   //50,2
$"{50.00:0.##}  //50