以百分比显示随机数

时间:2014-08-21 18:15:48

标签: c# winforms


我正在学习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%!");
}

我认为百分号在转换变量时会引起异常 我不知道该怎么办。我会帮助你 提前谢谢!

3 个答案:

答案 0 :(得分:1)

您有多种选择。

首先使用p中的格式PToString,例如:

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。