尝试将数字格式化为百分比

3

我正在尝试弄清楚如何将文本框中显示的数字转换为百分比。

我的程序基本上是计算2016年和2017年售出汽车的百分比变化。

为了测试它,我让2016年售出的汽车为7,2017年售出的汽车为12,我得到了一个非常长的数字。我知道你可以使用("p")或("P")来格式化数字,但我就是想不通在哪里放它?

private void calcbtn_Click(object sender, EventArgs e)
{
    double carsIn2016; //  number of cars sold in 2016
    double carsIn2017; // number of cars sold in 2017
    double Percentchanged; // calculate the % change

    carsIn2016 = double.Parse(soldIn2016txtbox.Text); //get input from text box
    carsIn2017 = double.Parse(soldIn2017txtbox.Text);  // get input from text box 
    Percentchanged =(carsIn2017 - carsIn2016) / (carsIn2016 * 100); // calculate the % change 

    MessageBox.Show( "Your total % change is   " + Percentchanged);
}

1
我认为可以使用 string.Format("您的总变化率为 {0:P}", Percentchanged) 或类似的方式来实现。但我不使用winforms,所以可能有其他方法。 - Matt Rollins
1
@MattRollins 这不取决于winforms,它是内置在核心框架中的。 - Camilo Terevinto
2个回答

2
百分比差异:计算您要比较的两个数字之间的差异(增加)。然后:将增加量除以原始数字,再将答案乘以100。
由于您在打印之前计算百分比。如果使用格式化程序,则会得到错误的结果。您只需要一个数字来进行字符串格式化,以将其转换为百分比。不要乘以100并使用格式化程序。
实际上,您在PrecentChanged变量中拥有百分比。
double carsIn2016; //  number of cars sold in 2016
double carsIn2017; // number of cars sold in 2017
double Percentchanged; // calculate the % change

carsIn2016 = double.Parse("7"); //get input from text box
carsIn2017 = double.Parse("12");  // get input from text box 
Percentchanged =((carsIn2017 - carsIn2016) / (carsIn2016));//* 100); // calculate the % change 



var output = String.Format("Your total % change is : {0:P}.", Percentchanged);

输出 71.43%

如果您将其乘以100并使用格式化程序

输出 值:7,142.86%。


1
你需要的是ToString()方法,可以与你所指示的“P”一起使用。
MessageBox.Show("Your total % change is " + PercentChanged.ToString("P"));

你可以通过ToString执行各种其他格式设置,如Microsoft's Website上所示。

当我执行ToString和("P")时,它显示“PercentChanged在当前上下文中不存在”。我声明有误或者其他什么问题吗? - GeauxTigers
1
啊,我刚才在那里有一个大写字母。谢谢你的帮助! - GeauxTigers

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接