如何使十进制变量保持/显示小数位,即使小数位只是零?

时间:2013-12-10 20:12:02

标签: c# formatting decimal

有没有办法让十进制变量始终保持小数位数。即使小数位只有0。

例如:

  

10.00,
  100.000,
  1000.00,
  等

我知道我们可以使用像string.Format("{0:0.00}", stringVariable)之类的字符串变量来完成它,但我们可以使用十进制变量来完成它。

4 个答案:

答案 0 :(得分:5)

10010都代表完全相同的小数。您无法更改基础小数表示这些值的方式,因为它们根本没有区别。您希望更改将十进制表示为字符串的方式,只有在将其转换为字符串后才能执行此操作。

答案 1 :(得分:2)

确实可以在.NET System.Decimal中存储尾随零。

与二进制floatdouble类型非常相似,decimal存储为符号位,有效位数和“缩放”(指数)。与floatdouble不同,decimal值未归一化,因此数字12345×10 -2 在内部不同于123450×10 -3 。您可以使用ParseTryParse

从字符串创建这些内容
IronPython 2.7.1 (2.7.0.40) on .NET 4.0.30319.1008
Type "help", "copyright", "credits" or "license" for more information.
>>> from System import *
>>> x = Decimal.Parse("123.45")
>>> y = Decimal.Parse("123.450")
>>> x.ToString()
'123.45'
>>> y.ToString()
'123.450'

请注意,虽然xy的表示方式不同,但它们的比较相同。

>>> x == y
True

不需要中间string对象的替代(但程序员友好程度较低)方法是使用the constructor来获取数字的组成部分:

>>> x = Decimal(12345, 0, 0, False, 2)
>>> y = Decimal(123450, 0, 0, False, 3)

但是,在大多数情况下,您实际上只关心显示一定数量的小数位而不是存储它们。这可以使用string.Format轻松完成。

>>> String.Format("{0:0.00}", x)
'123.45'
>>> String.Format("{0:0.000}", x)
'123.450'

答案 2 :(得分:0)

小数只是数字。无法强制数字本身等于10.0110

就像其他海报所说的那样,一旦你需要将它转换成一个字符串供用户查看,你就会担心十进制格式是什么,而不是之前。

答案 3 :(得分:-1)

只需使用ToString()重载,例如:

yourDecimal.ToString("0.000");
相关问题