双2小数位数

时间:2011-08-26 15:44:59

标签: c# math decimal rounding

  

可能重复:
  How to round and format a decimal correctly?

我有这个:

double xValue = 0.0;
double yValue = 0.0;

foreach (var line in someList)
{
    xValue = Math.Round(Convert.ToDouble(xDisplacement - xOrigin), 2);
    yValue= Math.Round(Convert.ToDouble(yDisplacement + yOrigin), 2);

    sw.WriteLine("( {0}, {1} )", xValue, yValue);

}

当它进行数学运算时,假设要舍入到2位小数。

无论其

..当一个数字类似 6.397 时,它会将其四舍五入为 6.4 而不包括尾随的“0”

如何在数字末尾添加“0”

如果我将此添加到 BEFORE (除非有更好的方法吗?)上面的 foreach循环 ...:

string properX = xValue.ToString().Replace(".", "");
string properY = yValue.ToString().Replace(".", "");

我将如何做到这一点?

5 个答案:

答案 0 :(得分:6)

使用格式字符串:

sw.WriteLine("( {0:0.00}, {1:0.00} )", xValue, yValue);

有关文档,请查看Standard Numeric Format StringsString.FormatTextWriter.WriteLine公开了相同的格式选项。

答案 1 :(得分:3)

此链接中的第一组示例:

http://www.csharp-examples.net/string-format-double/

// just two decimal places
String.Format("{0:0.00}", 123.4567);      // "123.46"
String.Format("{0:0.00}", 123.4);         // "123.40"
String.Format("{0:0.00}", 123.0);         // "123.00"

应该是你想要的。它还详细介绍了很多。

关于字符串数字格式的MSDN文档:

http://msdn.microsoft.com/en-us/library/0c899ak8.aspx#SpecifierPt

答案 2 :(得分:2)

这个尾随零与数字本身无关,而是与其表示无关。因此,如果您想要显示它,则无需更改数字 - 使用字符串格式:

sw.WriteLine("( {0:0.00}, {1:0.00} )", xValue, yValue);

答案 3 :(得分:1)

使用numeric format string显示任意数量的小数位:

sw.WriteLine("( {0:N2}, {1:N2} )", xValue, yValue);

答案 4 :(得分:1)

除了舍入您可能不想做的值之外,您可以像输出格式的一部分那样进行舍入:

WriteLine("{0:0.00}", value)