双精度保留两位小数

12 浏览
0 Comments

双精度保留两位小数

我有这个代码:

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"?

如果我在上面的foreach循环之前添加下面的代码(除非有更好的方法?):

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

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

我该如何操作?

0
0 Comments

(Double 2 Decimal Places)问题的出现原因是有人想要将一个double类型的数字保留两位小数。解决方法是使用String.Format函数并指定格式"{0:0.00}"来实现。下面是一个相关的示例:

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

然而需要注意的是,使用"."作为小数点分隔符并不适用于所有的本地化环境。在The "." Custom Specifier的文档中指出,小数点分隔符的具体形式取决于控制格式化的NumberFormatInfo对象的NumberDecimalSeparator属性。

虽然在原始回答中并没有明确指出是否支持本地化,但这种观点被广泛认可,所以我还是评论了一下。为了避免误导,我已经将原始回答中的相关内容删除,并提供了你提到的MSDN文档的链接。

0
0 Comments

(Double 2 Decimal Places)这个问题的出现的原因是数字的表示方式导致的。数字本身并没有问题,只是其表示方式导致了多余的零。如果想要显示两位小数的数字,需要使用字符串格式化来解决这个问题:

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

0
0 Comments

(Double 2 Decimal Places)这个问题出现的原因是在输出数据时,可能会出现小数位数过多或者不足的情况。解决方法是使用格式化字符串来控制输出的小数位数。

在给定的例子中,使用了格式化字符串来输出xValue和yValue两个变量的值,并保留两位小数。具体的代码如下:

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

这样,无论xValue和yValue的值是多少,都会被格式化为两位小数的形式进行输出。

在文档中,提到了使用标准数字格式字符串来进行格式化。String.Format和TextWriter.WriteLine都提供了相同的格式选项。

其中,某些情况下硬编码的小数点可能会导致本地化(L10N)问题。然而,这种说法是不正确的。String.Format会考虑本地化设置,以便使用适当的符号。在msdn.microsoft.com/en-us/library/0c899ak8.aspx#SpecifierPt中指出,“"."”自定义格式说明符会将本地化的小数分隔符插入结果字符串中,并且“结果字符串中用作小数分隔符的字符并不总是点号;它由控制格式化的NumberFormatInfo对象的NumberDecimalSeparator属性决定。”

因此,使用格式化字符串来控制小数位数是一种有效的解决方法,可以在输出数据时避免小数位数过多或者不足的问题。

0