使用CDec保留尾随0

时间:2015-08-06 18:22:24

标签: vb.net

如果值是整数,我需要添加0,如果已经有小数值,则需要舍入到1位小数。

我从一个字符串开始,用CDec转换,然后使用Decimal.Round进行舍入,如下所示:

Decimal.Round(CDec(myText),1)

但是,如果说myText," 1",我只能得到1分。从documentation on CDec我看到,除非计算得出,否则不会保留尾随0。我怎样才能完成一个明确的" .0"一个整数?

4 个答案:

答案 0 :(得分:2)

人们通常无法理解的一件事是,内部存储变量的方式与它们在屏幕上的显示方式完全不相关。最常见的是日期类型和小数类型。这些变量的值可能与它们的显示方式不同。例如日期在内部存储为小数,同时以mm / dd / yyyy或其他日期格式显示。类似地,小数在内部只是纯十进制数字(没有前导或尾随零或逗号分隔符),而显示的值可以具有前导或尾随零和逗号。

要格式化变量的显示,请调用ToString()方法,将其传递给您想要查看的格式。

在这种情况下,您可以调用Decimal.ToString("0.0")来舍入到一个小数位并强制显示尾随。

您可以执行以下操作之一:

DisplayText = CDec(myText).ToString("0.0")

或者,

DisplayText = Decimal.Parse(myText).ToString("0.0")

答案 1 :(得分:0)

你想这样做:

CDec(myText).ToString("0.0")

或者这个:

CDec(myText).ToString("N1")

请参阅standardcustom格式字符串的参考。使用Decimal.Parse()而不是CDec()重载的变体也没问题。

除非您需要set the MidPoint Rounding Type,否则不要使用Decimal.Round()。{/ 1}}。

答案 2 :(得分:-1)

IGear批准这种方法;这似乎工作稳定:

FormatNumber(Decimal.Round(CDec(myText),1), 1, TriState.True, TriState.False, TriState.False)

答案 3 :(得分:-2)

如果它是计算导出的,则利用0的保留,我试过:

Decimal.Round((CDec(myText)+.0D,1)

这不会改变值。