Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使十进制变量保留/显示小数点,即使小数点仅为零?_C#_Formatting_Decimal - Fatal编程技术网

C# 如何使十进制变量保留/显示小数点,即使小数点仅为零?

C# 如何使十进制变量保留/显示小数点,即使小数点仅为零?,c#,formatting,decimal,C#,Formatting,Decimal,有没有办法使十进制变量始终保留小数位数。即使小数位只有0 例如: 10.00, 10万, 1000.00, 等等 我知道我们可以使用字符串变量,比如string.Format(“{0:0.00}”,stringVariable),但是我们可以使用十进制变量。两个10和010表示完全相同的十进制。您无法更改基础十进制表示这些值的方式,因为它们根本没有区别。如果您希望更改将该小数表示为字符串的方式,则只能在将其转换为字符串后执行此操作。10和010都表示完全相同的小数。您无法更改基础十进制表示这些值

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

例如:

10.00,
10万,
1000.00,
等等


我知道我们可以使用字符串变量,比如
string.Format(“{0:0.00}”,stringVariable)
,但是我们可以使用十进制变量。

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

10和
010
都表示完全相同的小数。您无法更改基础十进制表示这些值的方式,因为它们根本没有区别。如果您希望更改将十进制表示为字符串的方式,则只能在将其转换为字符串后进行更改。

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

yourDecimal.ToString("0.000");
只需使用ToString()重载,例如:

yourDecimal.ToString("0.000");

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


正如其他海报所说,一旦需要将十进制格式转换为字符串以供用户查看,您就会担心十进制格式会是什么,而不是之前。

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


正如其他海报所说,一旦您需要将十进制格式转换为字符串以供用户查看,您就会担心十进制格式会是什么,而不是之前。

在.NET
系统中存储尾随的零。十进制确实是可能的

与二进制
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
对象的另一种方法(但对程序员不太友好)是使用数字的组成部分:

>>> 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'

在.NET
系统.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
对象的另一种方法(但对程序员不太友好)是使用数字的组成部分:

>>> 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'

OP说他知道你可以在一个字符串中完成,他想直接做到小数点。好吧,如果你认为这不合适,很抱歉,但我觉得要求“保留”与输出无关的小数点似乎不合逻辑。。。我的解决方案是给出一个outputSo,-1表示正确答案(没有人知道numeric-ToString重载,在将它们转换为字符串之前),0表示不符合逻辑的问题?这似乎更不合逻辑。。。但我认为,不管正确与否,它根本不能回答这个问题。OP想知道十进制,你只要重复他说的他知道字符串。OP说他知道你可以在字符串中做,他想直接做小数。好吧,如果你认为这不合适,很抱歉,但我觉得如果与输出无关,要求“保留”十进制部分似乎不合逻辑。。。我的解决方案是给出一个outputSo,-1表示正确答案(没有人知道numeric-ToString重载,在将它们转换为字符串之前),0表示不符合逻辑的问题?这似乎更不合逻辑。。。但我认为,不管正确与否,它根本不能回答这个问题。OP想知道十进制,你只要重复他说的他知道的关于字符串的内容。
System.decimal
可以存储重要的尾随零。也许我应该说得更清楚些。它可以存储一个有效的零,但我相信OP想要的是将数字的数量从较低的精度向上取整,并任意保留它们。
System.Decimal
可以存储有效的尾随零。也许我应该更清楚地说明它。它可以存储一个有效的零,但我相信OP想要的是将数字的数量从较低的精度向上取整,并任意保留它们。“…只有将其转换为字符串后,才能执行此操作”-回答了我的问题。谢谢。。。只有将其转换为字符串后,才能执行此操作’--回答了我的问题。谢谢