c# – 格式化为百分比 – 显示所有小数?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 格式化为百分比 – 显示所有小数?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3251字,纯文字阅读大概需要5分钟。
内容图文
![c# – 格式化为百分比 – 显示所有小数?](/upload/InfoBanner/zyjiaocheng/786/3f73806d17fb4e45ba97aa20bb71be8c.jpg)
我找不到一种方法来将double格式化为显示C#4.0中所有小数的百分比.
使用{0:P}与{0:P2}具有相同的效果,即格式化为百分比,严格显示两位小数.
我终于用{0:0.################################来代替有问题的{0:P}. %}.为了我的目的,我的双打没有达到那么多的小数.
解决方法:
原始方案
基本上这就是你想要做的:
string.Format("{0:0.############## %}", 0.1234); // 12.34 %
string.Format("{0:0.############## %}", 0.1234567); //12.34567 %
注意:对于十进制,您将使用0.############################.
替代品的缺点
您应该注意到0:0.00000000000000%留下尾随零:
string.Format("{0:0.00000000000000 %}", 0.1234); // 12.34000000000000 %
使用P14或NumberFormatInfo.PercentDecimalDigits具有相同的行为.如果要截断数字,哪个好.您也可以为部门提供资源,但要注意四舍五入.
如果你想要没有尾随零的完整精确度,你应该使用0.##############%.
新解决方案(考虑全球化)
您可以使用此方法构建一个自定义格式,该格式与默认P formal将执行的操作相匹配,但没有固定数量的小数位:
public string GetPercentFormat(CultureInfo culture)
{
if (culture == null)
{
culture = CultureInfo.CurrentCulture;
}
NumberFormatInfo nfi = culture.NumberFormat;
//% and . are localized by default
var baseFormat = "0.################";
var percentSymbol = "%";
var negativeSign = nfi.NegativeSign; //It may be problematic
string customFormat = string.Empty;
switch (nfi.PercentPositivePattern)
{
case 1: //n%
customFormat += baseFormat + percentSymbol;
break;
case 2: //%n
customFormat += percentSymbol + baseFormat;
break;
case 3: //% n
customFormat += percentSymbol + " " + baseFormat;
break;
case 0: //n %
default:
customFormat += baseFormat + " " + percentSymbol;
break;
}
customFormat += ";";
switch (nfi.PercentNegativePattern)
{
case 1: //-n%
customFormat += negativeSign + baseFormat + percentSymbol;
break;
case 2: //-%n
customFormat += negativeSign + percentSymbol + baseFormat;
break;
case 3: //%-n
customFormat += percentSymbol + negativeSign + baseFormat;
break;
case 4: //%n-
customFormat += percentSymbol + baseFormat + negativeSign;
break;
case 5: //n-%
customFormat += baseFormat + negativeSign + percentSymbol;
break;
case 6: //n%-
customFormat += baseFormat + percentSymbol + negativeSign;
break;
case 7: //-% n
customFormat += negativeSign + percentSymbol + " " + baseFormat;
break;
case 8: //n %-
customFormat += baseFormat + " " + percentSymbol + negativeSign;
break;
case 9: //% n-
customFormat += percentSymbol + " " + baseFormat + negativeSign;
break;
case 10: //% -n
customFormat += percentSymbol + " " + negativeSign + baseFormat;
break;
case 11: //n- %
customFormat += baseFormat + negativeSign + " " + percentSymbol;
break;
case 0: //-n %
default:
customFormat += negativeSign + baseFormat + " " + percentSymbol;
break;
}
return customFormat;
}
注意:使用StringBuilder实现它可能是值得的.
像这样使用它:
void Main()
{
var customFormat = GetPercentFormat(null);
Console.WriteLine(string.Format("{0:"+ customFormat + "}", 0.1234));
}
输出:
12.34 %
您还可以使用替代CultureInfo:
void Main()
{
var culture = new CultureInfo("quz-BO"); //Quechua (Bolivia)
var customFormat = GetPercentFormat(culture);
Console.WriteLine(string.Format(culture, "{0:"+ customFormat + "}", 0.1234));
}
输出:
%12,34
GetPercentFormat生成的格式几乎完全本地化.它将考虑给定CultureInfo的自定义负面和正面格式.注意:这几乎完全本地化,因为未使用组(NumberFormatInfo.PercentGroupSeparator)和组大小(NumberFormatInfo.PercentGroupSizes).
内容总结
以上是互联网集市为您收集整理的c# – 格式化为百分比 – 显示所有小数?全部内容,希望文章能够帮你解决c# – 格式化为百分比 – 显示所有小数?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。