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

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

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

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


当前回答

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

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

其他回答

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

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

我喜欢用

$"{value:0.##}

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

例子:

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

我相信:

String.Format("{0:0.00}",Sale);

应该这么做。

看到链接 字符串格式示例c#

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

这适用于你想要使用插值字符串的情况。实际上,我发布这个是因为我厌倦了反复试验,最终每次我需要格式化某个标量时都要翻阅大量的文档。

$"{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"