Math.Floor到十进制后的x位数

时间:2016-03-08 21:23:11

标签: c# math

我需要在小数点后显示两位数,同时以百分比舍入到楼层。我写了这个代码来做到这一点,但这看起来太复杂了,还有另一种更有效的方法吗?

 double decimalPlacesFactor =Math.Pow(10, numberOfDigits+2);
 percentage = Math.Floor((NumA/NumB)*decimalPlacesFactor)/decimalPlacesFactor *100;

输出应该看起来像

99.78 %

2 个答案:

答案 0 :(得分:0)

取决于您希望如何显示百分比值,但我猜你想要显示百分比string?怎么样:

string percentage = Math.Floor(NumA/NumB).ToString("0.00");
Console.WriteLine(Math.Floor(2.3).ToString("0.00")); //this will output 2.00

如果你想在十进制可配置之后设置位数,你可以预先创建掩蔽字符串,如下所示:

private string CreateMaskingString(int numberOfDigits)
{
    var sb = new StringBuilder("0.");
    sb.Append(new string('0', numberOfDigits));
    return sb.ToString();
}

使用情况如下:

Console.WriteLine(Math.Floor(2.3).ToString(CreateMaskingString(2))); //this will output 2.00

一个更加简单和优雅的解决方案就像这样,正如RomCoo所指出的那样:

string percentage = Math.Floor(NumA/NumB).ToString("F" + numberOfDigits);

" F"这意味着什么您可以阅读explanation here。但基本上是:

  

定点(" F")格式说明符将数字转换为字符串   形式" -ddd.ddd ..."每个" d"表示一个数字(0-9)。该   如果数字是负数,则字符串以减号开头。

答案 1 :(得分:0)

使用ToString()方法将您的数字转换为字符串。使用参数" FX"将其显示为带X位的浮点数。例如" F2"两位数

string percentage = Math.Floor(NumA/NumB).ToString("F"+numberOfDigits);