使用 ToString 方法将双倍显示为不带小数的百分比

Show double as percentage without decimals with ToString method

正在寻找:

95,4545454545455 -> 95 %

我尝试使用:

String resultAsPercentage = result.ToString("##0 %");

但是,它显示

9545 %

然后,我使用 regex:

解决了我的问题

问题:为什么我的ToString方法没有用?以及如何修复它以避免使用正则表达式?

提前致谢。

Custom Numeric Format Strings, the % modifier multiplies the value by 100 before inserting the %. It's intended to be used with fractions. To disable this special meaning of %, escape it by preceding it with @"\" 中所述。

或者,您可以从格式字符串中取出 %,然后手动附加它:result.ToString("##0") + " %".

一种方法可以是 Clone a culture (like InvariantCulture), set it's PercentPositivePattern to 0, divide your value by 100 and get it's string representation using The percent ("P") format specifier 具有 0 的精度,并且 that 将文化克隆为;

var clone = (CultureInfo)CultureInfo.InvariantCulture.Clone();
clone.NumberFormat.PercentNegativePattern = 0;
Console.WriteLine(((int)95.4545454545455 / 100.0).ToString("P0", clone)); // 95 %

您可以在该页面的 Remarks section 上看到所有相关模式。

您可以保证设置 PercentNegativePattern property 以及负值。

你可以使用wP(ercentage) format specifier,你需要除以100因为说明符将它乘以100:

decimal value = 95.4545454545455m;
String resultAsPercentage = (value / 100).ToString("P0");  // 95%

如果您需要值和百分比符号之间的 space,您 可以 使用此方法:

NumberFormatInfo nfi = (NumberFormatInfo)NumberFormatInfo.CurrentInfo.Clone();
nfi.PercentSymbol = " %";
String resultAsPercentage = (value / 100).ToString("P0", nfi);  // 95 %

如果你不关心四舍五入,你可以使用下面的:

double result = 95.4545454545;
String resultAsPercentage = (int)result + " %";
System.out.println(resultAsPercentage);

输出为:95 %

转换为 int 会舍去小数位而不舍入