C# 在C语言中将文本数据转换为百分比#
我正在将数据输入一个文本字段,我需要将其显示为百分比。是否有执行此操作的功能 例如:在我的专栏中,我有C# 在C语言中将文本数据转换为百分比#,c#,C#,我正在将数据输入一个文本字段,我需要将其显示为百分比。是否有执行此操作的功能 例如:在我的专栏中,我有“0.5”、“0.1”、“0.2”、“0.25”等,需要显示为 50%、10%、20%、25%等,最好的方法是什么?您应该分两个阶段进行: 将文本解析为一个数字,这样您就得到了作为“真实”类型的值。(一般来说,尽可能早地解析文本,尽可能晚地格式化为字符串……使用自然类型,两者之间的操作会简单得多。) 使用for将数字格式化为百分比 因此: 注: 你应该考虑输入和输出两种文化;例如,您是否总
“0.5”、“0.1”、“0.2”、“0.25”等,需要显示为
50%、10%、20%、25%等,最好的方法是什么?您应该分两个阶段进行:
- 将文本解析为一个数字,这样您就得到了作为“真实”类型的值。(一般来说,尽可能早地解析文本,尽可能晚地格式化为字符串……使用自然类型,两者之间的操作会简单得多。)
- 使用for将数字格式化为百分比
因此:
注:
你应该考虑输入和输出两种文化;例如,您是否总是希望使用“.”作为小数分隔符
- 使用
decimal
而不是double
来精确表示文本中的值(例如,文本可以有“0.1”,但double
不能精确保存0.1的值)
- 您可以向格式中添加所需精度等内容;详见链接单据;例如,该示例仅给出一个整数百分比
最简单的方法是解析它(必须是双精度的),然后将其转换回字符串,并将其格式化为百分比
var percentageString = double.Parse(doubleString).ToString("p1");
现在,你们中的一些hoity-toity类型可能会说这是本例中使用的正确类型
是的,如果你需要额外的12-13位精度
然而,我们大多数真正的人(我一直在努力保持真实感)都可以达到15-16位数的精度
真正的选择是您的代码首先使用的是双精度还是小数。如果您在代码中使用双精度,请坚持使用双精度。如果是小数,请坚持使用小数。你确实想要避免的是必须在两者之间转换,这是绝对必要的,因为有龙。以及可能损坏数据的意外运行时错误。但大部分是龙。在WPF中,您可以使用转换器。请提供更多信息。Winforms还是WPF?视图中的对象是什么等等使用WPF,您还可以直接在绑定检查中指定格式。这也意味着:“p”的末尾往往有额外的小数(0.2
将变成20.00%
IIRC)-“p0”可能是preferable@MarcGravell:我在这方面添加了注释:)将在示例中编辑为使用p0。一个典型的彻底答案,+1表示文化敏感性。在我看来,双精度是个坏主意-输入数据自然是十进制的,为什么要使用双精度?@JonSkeet:看,你,别再那么聪明了。
var percentageString = double.Parse(doubleString).ToString("p1");