Format() 带逗号的数字字符串,同时在 for 循环中转换为字符串

Format() number string with comma while it is converted to string inside for loop

我已经从 this thread 知道如何用逗号格式化数字字符串,事实上,我正在尝试将已接受的答案应用到我的案例中。

然而,据我所知,它处理的是预先确定的字符串变量。在我的例子中,它是 运行 一个 for 循环,它将双精度值转换为字符串并将输出显示为 table 行。

for (double i = 1; i <= years; i++)
{
                              //number of years         //future value
   richTextBoxResults.Text += i.ToString().PadLeft(3) + (presentValue * Math.Pow(((interestRate / 100 / periods) + 1), (periods * i))).ToString("$#.00").PadLeft(28) + "\n";
}

为简单起见,3 个输出行应该足以理解这个想法

Years                                Future Value
__________________________________________________
  1                                    34567.89
  2                                    45678.90
  3                                    56789.01

我尝试在 .ToString("$#.00") 方法之后的循环内使用 Format(),但是,我收到 Method() cannot be accessed _with an instance reference 错误。但是,我不确定如何将这些答案应用到我的案例中。

我正在考虑创建一个字符串变量,它可以临时存储值并对其进行格式化。但我想知道是否有更优雅的解决方案。

我还能应用 Format() 方法吗(也许在不同的角度下),所以我的输出会像下面这样

Years                                Future Value
__________________________________________________
  1                                  ,234,567.89
  2                                  ,345,678.90
  3                                  ,456,789.01

或者我需要改变我的方法吗?

您的代码不可读,这让您很难理解问题所在。在 .ToString 之前有一个额外的 ) :

Math.Pow(((interestRate / 100 / periods) + 1), (periods * i)).ToString("$#.00").PadLeft(28)

您可以使用 "[=13=],#.00" 来应用千位分隔符。

您必须调用 Format() 作为 string class 的静态方法:

string.Format(/*YourParameters*/)

为了使您的代码可读,请将您的数据放在一个变量中。然后像这样格式化。

 var _value = presentValue * Math.Pow(((interestRate / 100 / periods) + 1), (periods * i));
 richTextBoxResults.Text+= i.ToString().PadLeft(3) + String.Format("{0:0.00}",_value) .PadLeft(28) ;