title: how to round value to only 3 decimal points?
body: <p>i am working on a inventory software and was calculating the discount by percentage and amount as well. </p>
  
  <ul>
  <li>means when i enter % amount it automatically convert to price#</li>
  <li>and when i enter price it automatically converts to the % #</li>
  </ul>
  
  <p>the code i am using to convert price in % is this is:</p>
  
  <pre><code>if(txtDiscount.Text == "" || txtGrandTotal.Text == "")
              {
                  MessageBox.Show("Please Enter amount in Grand Total",Application.ProductName,MessageBoxButtons.OK,MessageBoxIcon.Information);
              }
              else
              {
                //  double percent;
                  double grandTotal;
                  double per;
                  double txDiscount;
  
                  //percent = Convert.ToInt32(txtPercant.Text);
                  grandTotal = Convert.ToInt32(txtGrandTotal.Text);
                  txDiscount = Convert.ToInt32(txtDiscount.Text);
  
  
                  per = txDiscount / grandTotal * 100;
  
                  //per = percent / 100 * grandTotal;
  
                  if (per % 3 != 0)
                      per = (per - per % 3) + 3;
  
  
                  txtPercant.Text = Convert.ToString(per);
  
                      ................
                      ................
                      ................
                      ................
                      ................
  </code></pre>
  
  <p>now let's suppose if i am entering the amount is "25", then the percentage it count is "2.77777777777778". i want to limit this to three decimals after point, like i want to to be "2.778" or whatever means i want to to show only 3 decimals after point, can any one help me out in which way i can do it ?? any suggestions would be appreciated!!</p>
  
  <h2>EDIT:</h2>
  
  <p>Coversion from Price to % Code is:</p>
  
  <pre><code>  private void txtDiscount_Leave(object sender, EventArgs e)
          {  
              if(txtDiscount.Text == "" || txtGrandTotal.Text == "")
              {
                  MessageBox.Show("Please Enter amount in Grand Total",Application.ProductName,MessageBoxButtons.OK,MessageBoxIcon.Information);
              }
              else
              {
                //  double percent;
                  double grandTotal;
                  double per;
                  double txDiscount;
  
                  //percent = Convert.ToInt32(txtPercant.Text);
                  grandTotal = Convert.ToInt32(txtGrandTotal.Text);
                  txDiscount = Convert.ToInt32(txtDiscount.Text);
  
  
                  per = txDiscount / grandTotal * 100;
  
                  //per =  Math.Round(per, 3);
                  per = Math.Truncate(per * 1000) / 1000;
  
                  txtPercant.Text = Convert.ToString(per);
  
  
  
  
  
  
  
  
                  double lblgrandTotal = 0.0;
                  double Disconunt = 0.0;
                  double netTotal = 0.0;
  
                  lblgrandTotal = Convert.ToDouble(txtGrandTotal.Text);
                  Disconunt = Convert.ToDouble(txtDiscount.Text);
                  netTotal = grandTotal - Disconunt;
  
              //netTotal = Convert.ToInt32(grandTotal) - Convert.ToInt32(Discount);
  
              lblNetTotal.Text = Convert.ToString(netTotal);
  
              }
          }
  </code></pre>
  
  <p>Cobersion from % to Price Code is :           </p>
  
  <pre><code>   private void textBox1_Leave(object sender, EventArgs e)
          {
              if (txtPercant.Text == "")
              {
                  MessageBox.Show("Please Enter value in Percenent", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Information);
              }
              else
              {
                  double percent;
                  double grandTotal;
                  double per;
  
                  percent = Convert.ToDouble(txtPercant.Text);
                  grandTotal = Convert.ToDouble(txtGrandTotal.Text);
  
                  per = percent / 100 * grandTotal;
  
                  txtDiscount.Text = Convert.ToString(per);
  
                  double lblgrandTotal = 0.0;
                  double Disconunt = 0.0;
                  double netTotal = 0.0;
  
                  lblgrandTotal = Convert.ToDouble(txtGrandTotal.Text);
                  Disconunt = Convert.ToDouble(txtDiscount.Text);
                  netTotal = grandTotal - Disconunt;
  
                  //netTotal = Convert.ToInt32(grandTotal) - Convert.ToInt32(Discount);
  
                  lblNetTotal.Text = Convert.ToString(netTotal);
              }
          }
  </code></pre>
  
  <p>but the problem i am facing is i am converting % to price and Vise Versa, now in case i am adding 12 in Price it says 12.33%, and when i put 12.33% it converts back it to 11.997Price which is not the same ans it should be... it should be exactly 12 not 11.997... really confused in it..!!</p>
  
  <h2>NOTE:</h2>
  
  <p>by price i mean that i am calculating % discount and price discount on grand total, means if i add 12% then it calculate the price discount of grand total and if i enter the price amount then it calculates the %discount of grand total </p>