我需要在小数点后显示两位数,同时以百分比舍入到楼层。我写了这个代码来做到这一点,但这看起来太复杂了,还有另一种更有效的方法吗?
double decimalPlacesFactor =Math.Pow(10, numberOfDigits+2);
percentage = Math.Floor((NumA/NumB)*decimalPlacesFactor)/decimalPlacesFactor *100;
输出应该看起来像
99.78 %
答案 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);