有没有办法让十进制变量始终保持小数位数。即使小数位只有0。
例如:
10.00,
100.000,
1000.00,
等
我知道我们可以使用像string.Format("{0:0.00}", stringVariable)
之类的字符串变量来完成它,但我们可以使用十进制变量来完成它。
答案 0 :(得分:5)
10
和010
都代表完全相同的小数。您无法更改基础小数表示这些值的方式,因为它们根本没有区别。您希望更改将十进制表示为字符串的方式,只有在将其转换为字符串后才能执行此操作。
答案 1 :(得分:2)
确实可以在.NET System.Decimal
中存储尾随零。
与二进制float
和double
类型非常相似,decimal
存储为符号位,有效位数和“缩放”(指数)。与float
和double
不同,decimal
值未归一化,因此数字12345×10 -2 在内部不同于123450×10 -3 。您可以使用Parse
或TryParse
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'
请注意,虽然x
和y
的表示方式不同,但它们的比较相同。
>>> 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");