如果值是整数,我需要添加0,如果已经有小数值,则需要舍入到1位小数。
我从一个字符串开始,用CDec转换,然后使用Decimal.Round进行舍入,如下所示:
Decimal.Round(CDec(myText),1)
但是,如果说myText," 1",我只能得到1分。从documentation on CDec我看到,除非计算得出,否则不会保留尾随0。我怎样才能完成一个明确的" .0"一个整数?
答案 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")
请参阅standard和custom格式字符串的参考。使用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)
这不会改变值。