C# 为什么百分比格式说明符乘以100?

C# 为什么百分比格式说明符乘以100?,c#,string-formatting,C#,String Formatting,为什么百分比的“p”字符串格式在使用百分号格式化之前要将值乘以100 百分比(“p”)格式说明符 百分比(“p”)格式说明符将数字乘以100,然后 将其转换为表示百分比的字符串。精度 说明符指示所需的小数位数。如果 省略精度说明符,提供默认的数字精度 由当前百分比小数位数属性使用 有没有办法防止在格式化之前将值乘以100?而不是做: (value / 100).ToString("p") 至于为什么,“百分比”字面意思是“百分之一百”,所以50%在数学上等于0.50。至于格式,为什么不加个百

为什么百分比的“p”字符串格式在使用百分号格式化之前要将值乘以100

百分比(“p”)格式说明符

百分比(“p”)格式说明符将数字乘以100,然后 将其转换为表示百分比的字符串。精度 说明符指示所需的小数位数。如果 省略精度说明符,提供默认的数字精度 由当前百分比小数位数属性使用

有没有办法防止在格式化之前将值乘以100?而不是做:

(value / 100).ToString("p")
至于为什么,“百分比”字面意思是“百分之一百”,所以50%在数学上等于
0.50
。至于格式,为什么不加个百分号呢

value + "%"
。。。或者像这样:

value.ToString("#.00\\%")

您通常使用代码内部的小数百分比,如
0.5
1.0
,但用户喜欢看到结尾加上百分号的漂亮整数

百分比表示“超出
100
”,显然您的小数百分比超出
1
。因此,
.ToString(“p”)
将您的数字乘以
100
,然后附加一个百分号


这只是定义。

如果您不想将值乘以100,只需要输入值之外的百分比%,即value.00%,如果输入的值为默认值0.00%,则答案是

百分比_格式=“#0.00\%”


这对我来说绝对有效

通常您使用代码内部的小数百分比(如
0.5
->
50%
)。用户喜欢看到带有百分号的完整数字,这就是这个函数所做的。可能是因为像“某物的1%”这样的数字实际上意味着“某物/100.0”?@Blender:通常不是,总是!Percent=>Percent(Percentum在拉丁语中的意思是“百分之一百”),来源wiki,@Akash-太棒了,每天学习新东西。:)百分号的使用是特定于区域性的,有些区域性将其放在开头,有些区域性将其放在结尾,有些区域性将其指定为50.00%,而不是50%,等等。因此,希望将其格式设置为百分比。@Phill:到底是什么驱动了您的要求?例如,为什么不在格式化之前将数字除以100?这仅仅是您提出的一些任意要求,还是背后有一些原因?@Phill为了教育起见,为了克服这一点,您可以使用
CurrentUICulture.NumberFormatInfo
,并使用这些信息创建您自己的文化正确格式(正如
ToString
所做的那样,不进行分割)。男孩,这听起来不是很有趣吗?@StriplingWarrior-没有要求,只是我们必须在用户文化中设置数字/货币的格式,我想也可以将百分比设置为用户文化,但已经计算出百分比是25%,我只希望它根据区域性将“%”放在正确的位置。可以先除以100,这看起来像是一个黑客,认为可能有一种方法可以避免乘法。@Phill:我认为除以100是最简单的方法,除非你想找到计算百分比的来源,并首先阻止它乘以100。“你的函数”是什么在你的回答中提到了吗?@Gabe:对不起,我会更详细一点。问题是为什么会发生这种行为,而不是如何正确设置格式。这可能没有回答这个问题,但我发现它是有价值的,所以我加1