使用 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 会舍去小数位而不舍入
正在寻找:
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 会舍去小数位而不舍入