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

Phi*_*ill 18 c# string-formatting

(找不到重复)

有谁知道原因:

http://msdn.microsoft.com/en-us/library/dwhawy9k.aspx#PFormatString

'p'字符串格式为百分比,在用百分号进行格式化之前将值乘以100?

百分比("P")格式说明符

百分比("P")格式说明符将数字乘以100并将其转换为表示百分比的字符串.精度说明符表示所需的小数位数.如果省略精度说明符,则使用当前PercentDecimalDigits属性提供的默认数值精度.

反正是否有格式化之前阻止值乘以100?而不是做:

(value / 100).ToString("p")
Run Code Online (Sandbox Code Playgroud)

Str*_*ior 21

至于为什么,"百分比"的字面意思是"百分之一",所以50%在数学上等同于0.50.至于格式化,为什么不添加百分号?

value + "%"
Run Code Online (Sandbox Code Playgroud)

......或类似的东西:

value.ToString("#.00\\%")
Run Code Online (Sandbox Code Playgroud)

  • 百分比符号使用是特定于文化的,一些文化在开始时,一些在最后,一些指定50.00%而不是50%等.所以想要格式化为百分比. (4认同)
  • @Phill:究竟是什么推动了您的要求?例如,为什么不在格式化之前将数字除以100?这只是你提出的一些任意要求,还是背后有一些推理? (2认同)
  • @Phill为了教育,为了克服这个问题,你可以使用`CurrentUICulture.NumberFormatInfo`,并使用这个信息来创建你自己的文化正确的格式(就像`ToString`那样,没有除法).男孩,听起来不是很有趣吗? (2认同)

Ble*_*der 5

你通常使用代码中的小数百分比,比如0.51.0,但是用户喜欢在最后添加百分号时看到漂亮的整数.

百分比表示"超出100",显然您的小数百分比不在1.因此, .ToString("p")将您的数字乘以100,然后附加百分号.

这只是定义.