如果它们为零,如何删除小数?

时间:2015-12-10 08:47:25

标签: c# .net decimal tostring percentage

我有一些百分比,我不知道如何删除零。这意味着如果我 5.00%我希望它显示 5%,但是如果我有 5.20%我希望它显示 5.20 %即可。 我从一个模型中查看每个成员,然后我<span>@item.percentage</span>。如何让它正确显示?

3 个答案:

答案 0 :(得分:1)

您可以检查号码是否有小数位并产生适当的结果。

public static string MyDoubleToString(double d)
{
    // preventing rounding
    // if you want 5.9999 becomes 6 then comment the line below
    d = Math.Truncate(d * 100) / 100;

    return $"{d.ToString("f2")}%".Replace(".00%", "%");
}

你可以这样使用它。

var doubles = new double[] { 5.0, 5.999, 3.2 };

foreach (var d in doubles)
    Console.WriteLine(MyDoubleToString(d));

,结果将是

  

5%
  5.99%
  3.20%

如果你想在剃须刀中使用它,那么

@MyDoubleToString(item.percentage)

答案 1 :(得分:0)

这有点hacky但是有效...

public static string FormatDecimalWithPercent(decimal d, int decimalPlaces)
{
    string format = "{0:f" + decimalPlaces + "}";

    string candidate = string.Format(format, d);
    string trimmed = candidate.TrimEnd('0');

    if (trimmed.EndsWith("."))
        return trimmed.TrimEnd('.') + "%";

    return candidate + "%";
}

这是一个不那么有用的解决方案(因此更好):

public static string FormatDecimalWithPercent(decimal d, int decimalPlaces)
{
    decimal rounded   = decimal.Round(d, decimalPlaces);
    decimal truncated = decimal.Round(d, 0);

    if (rounded != truncated)
        return string.Format("{0:f" + decimalPlaces + "}", rounded) + "%";

    return truncated + "%";
}

答案 2 :(得分:0)

                    @foreach($resultArr as $item)
                        <tr>
                            <td> {{ $item['ip'] }} </td>
                            <td> {{ $item['byte'] }} </td>
                        </tr>
                    @endforeach