我正在学习C#,我希望在一个标签中显示随机数后显示%符号
我的代码效果很好,但只显示数字。我想要带百分号的数字:
Random randnum = new Random();
label_showRandNum.Text = randnum.Next(-1, 101).ToString();
我只是不知道如何用百分号(%)来显示数字 我试图格式化标签,但没有成功。当选择的数字是例如10:
时,我还会显示一条消息int number;
number = Convert.ToInt32(label_showRandNum.Text);
if (number == 10)
{
MessageBox.Show("You have picked 10%!");
}
我认为百分号在转换变量时会引起异常 我不知道该怎么办。我会帮助你 提前谢谢!
答案 0 :(得分:1)
您有多种选择。
首先使用p
中的格式P
或ToString
,例如:
Random randnum = new Random();
label_showRandNum.Text = randnum.Next(-1, 101).ToString("p");
但是,问题是这样的,格式p
导致数字乘以100
,然后在其旁边放置一个百分号。
Standard Numeric Format: "p" or "P"
数字乘以100并以百分号显示。
您可以使用Random.NextDouble
方法生成0到1之间的值,然后在Label中使用它。
但另一种选择是:
您可以将%
百分比符号连接到您的标签,当您解析它时,您可以删除它:
label_showRandNum.Text = randnum.Next(-1, 101).ToString()
+ CultureInfo.CurrentCulture.NumberFormat.PercentSymbol;
这将导致Text
保持10%
,en-US
文化价值。
稍后当您将Text
值解析为int
时,您可以执行以下操作:
int number = int.Parse(label_showRandNum.Text.Replace
(CultureInfo.CurrentCulture.NumberFormat.PercentSymbol,
""));
我宁愿使用CultureInfo.CurrentCulture.NumberFormat.PercentSymbol
然后使用硬编码%
符号。因为这可能因文化而异。
答案 1 :(得分:0)
你的意思是??
int number;
number = Convert.ToInt32(label_showRandNum.Text);
if (number == 10)
{
MessageBox.Show("You have picked "+number +"%!");
}
答案 2 :(得分:0)
这样的事情:
将随机数作为带%
符号的字符串:
Random randnum = new Random();
string text = randnum.NextDouble().ToString("P0"); // note P0 will give you
// zero decimal places
Console.WriteLine(text);
要将其转换为int
(或double
),您可以执行以下操作:
int value = int.Parse(text.Replace("%",""));
Console.WriteLine(value);
请注意,使用P
格式说明符会自动将数字加倍100
,这就是我使用NextDouble
生成0..1
之间的数字以提供输出的原因在0..100%
之间。因此,如果您希望在解析原始值后将其恢复原状,则需要再将其除以100。